我只是 C 编程的初学者,我为以下 2 个代码块获得了 2 个不同的输出。
#include <stdio.h>
int main(void)
{
int i=0;
while (i<5)
{
int j=1;
while (j<=2*i+1)
{
printf("*");
j++;
}
i++;
printf("\n");
}
}
#include <stdio.h>
int main(void)
{
int i=0;
int j=1;
while (i<5)
{
while (j<=2*i+1)
{
printf("*");
j++;
}
i++;
printf("\n");
}
}
请问有人可以解释一下原因吗? 感谢您花时间阅读我的问题。我们将非常感谢您的帮助。
第一个代码块返回: * *** ***** ****** *********
第二个代码块返回: * ** ** ** **
在第一个程序中,变量
j
在外循环的每次迭代中都被初始化为 1
。
在第二个程序中,变量
j
仅在程序开始时初始化一次。
为了使两个程序等效,第二个程序应更改为:
#include <stdio.h>
int main(void)
{
int i=0;
int j=1;
while (i<5)
{
j = 1; // Change here, resetting the variable j
while (j<=2*i+1)
{
printf("*");
j++;
}
i++;
printf("\n");
}
}