该程序只是在用户输入行数时创建钻石的形状,因此它只有6个for循环; 3个循环创建第一个三角形,3个循环创建另一个三角形,这两个三角形和6个循环我们有一个钻石,这是整个程序的图像:
我对第5个for循环感到有点困惑,为第二个三角形创建空间的循环,循环首先添加第一个空格然后循环结束,程序继续到第6个循环并返回到进行第5次和第4次循环全部第6个循环,5个循环正在添加1,2,3,..空格,我们可以从spaces++
看到,问题是这是如何工作的?计数器c每次都变得越来越高,c++
,所以(空格和c)之间的差异每次仍然是1,因此它假设每次只添加一个空格,对于那些理解我是什么的人来说说你能解释一下吗
int n, c, k, space = 1;
printf("Enter number of rows\n");
scanf("%d", &n);
space = n - 1;
for (k = 1; k <= n; k++)
{
for (c = 1; c <= space; c++)
printf(" ");
space--;
for (c = 1; c <= 2*k-1; c++)
printf("*");
printf("\n");
}
space = 1;
for (k = 1; k <= n - 1; k++)
{
for (c = 1; c <= space; c++)
printf(" ");
space++;
for (c = 1 ; c <= 2*(n-k)-1; c++)
printf("*");
printf("\n");
}
答案 0 :(得分:0)
计数器c每次都越来越高,c ++,所以 (空格和c)之间的差异每次仍为1
不,space++
不是增加c的循环的一部分。该循环打印space
个空格;完成后,空间会增加,所以下次再打印1个空格。
答案 1 :(得分:0)
在第5个for循环之后你应该添加空格++;否则钻石将不是正确的形状。