C语言中for循环中嵌套while循环 为什么对j还要在for中定义 如:

#include<stdio.h>
void main()
{
int i, j;
for ( i = 1; i < 6; i++)
{
j = 1;
while (j<i+1)
{
putchar('*');
j++;
}
printf("\n");
}
}
正常输出。。。。
#include<stdio.h>
void main()
{
int i, j=1;
for ( i = 1; i < 6; i++)
{
while (j<i+1)
{
putchar('*');
j++;
}
printf("\n");
}
}
错误输出

第1个回答  2015-04-06
for内部的j=1;
仅仅是对j进行一次赋值。
为什么会出错,是因为结果不正确。每次循环都要保证j的初值是1,自然要进行重新赋值追问

我的意思是 我在开头的时候已经对j赋值为1但为什么 还要在for语句中在赋值一次 求知道

追答

开始赋值一次,并不意味着while循环执行一次后,第二次执行前j还是1
while循环内部对j自增操作,for执行第二次的时候,j不会因此而又变成1
循环也是一连串的相同操作,把循环拆开,不停地执行同一组语句,j的值不会因为一组语句完成后就自动恢复

本回答被提问者采纳
第2个回答  2015-04-06
第一个是每次进入while循环前都做j=1,而第二个j的值是上次结束while循环之后的值。
相似回答