作业帮 > 综合 > 作业

用C语言编程:从键盘输入N,输出一个由*组成的边长为n的正六边形,我要空心和实心的两个,编2个程序.

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/31 11:42:45
用C语言编程:从键盘输入N,输出一个由*组成的边长为n的正六边形,我要空心和实心的两个,编2个程序.
用C语言编程:从键盘输入N,输出一个由*组成的边长为n的正六边形,我要空心和实心的两个,编2个程序.
#include
void print(int space, int num, int type)
{
while (space--) putchar(' ');
if (type)
{
while (num--) putchar('*');
putchar('\n');
}
else
{
putchar('*');
num = (num > 2)? num - 2: 0;
while (num--) putchar(' ');
putchar('*');
putchar('\n');
}
}
void solid(int n) //空心
{
int i;

for (i = 0; i < 2 * n - 1; i++)
print(abs(n - i - 1), 3 * n - 2 - 2 * abs(n - i - 1), 1);
}
void hollow(int n) //实心
{
int i;

print(n - 1, n, 1);
for (i = 1; i < 2 * n - 2; i++)
print(abs(n - i - 1), 3 * n - 2 - 2 * abs(n - i - 1), 0);
print(n - 1, n, 1);
}
int main()
{
hollow(4);
return 0;
}
再问: 您的程序中 print(abs(n - i - 1), 3 * n - 2 - 2 * abs(n - i - 1), 1); 中的abs我的VC++6.0不识别啊!
再答: 那把abs换成fabs,然后加头文件#include
再问: 您的程序没有满足我“N从键盘输入”的要求啊!我刚刚弄的百度,就30分,您给弄好了我的分全给你。
再答: int main() { int n, flag; printf("Input the N:"); scanf("%d", &n); printf("Hollow or solid?(1/2)"); scanf("%d", &flag); if (flag == 1)hollow(n); else solid(n); return 0; }