这个程序产生这个输出:
*******
*****
***
*
代码如下:
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 1; i <= 5; i++)
{
for (j = 1; j < i;j++)
printf(" ");
for (; j <= 8 - i;j++)
printf("*");
printf("\n");
}
return 0;
}
for (; j <= 8 - i;j++)
是什么意思? ?没有初始化步骤,也不明白为什么第二行只有五个*。
最佳答案
For 循环实际上不需要有初始化语句。许多循环选择包含一个,但这并不是绝对必要的。因此,您可以认为该循环是在说“我们不需要在这里为初始化做任何特殊的事情。”
至于第二行为什么有五颗星,我们看这部分代码:
for (j = 1; j < i;j++)
printf(" ");
for (; j <= 8 - i;j++)
printf("*");
在第二次迭代中,i
等于2。当第一个循环运行时,它会打印出一个空格字符。当 j < i
时循环停止运行不再为真,所以当它完成运行时,j
的值将为 2。因此,第二个循环将为 j =
运行2、3、4、5、6,停止时 j = 7
.这就是您看到五颗星的原因。
希望这对您有所帮助!
关于c - 为什么第二个循环没有初始化?为什么它打印五颗星?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31728980/