对于这样的一个双循环for语句我这样理解对不?帮我纠错一下

来源:百度知道 编辑:UC知道 时间:2024/09/20 21:07:49
main()

{

int i,j;

char a[][5]={{'B','A','S','I','C',},{'d','B','A','S','E'}};

for(i=0;i<=1;i++)

{

for(j=0;j<=4;j++)

printf("%c",a[i][j]);

printf("\n");

}

我的理解是:
程序一开始先判断了外环条件i<=1为真,所以转向内环由于j<=4也是为真所以执行printf("%c",a[i][j])此时的输出为B;之后对j+1,再来判断j<=4,为真在执行printf("%c",a[i][j]);输出为A……在输出S……
当条件j>4时跳出内循环,对外循环的i+1,之后再来判断i<=1,为真,问题来了,由于下面的内循环j已经大于4,所以条件不能满足,那么程序就不会执行printf("%c",a[i][j]);那对于次此程序char a[2][5]
的第二行数组岂不是没法输出了吗?

你的理解错了.
for(j=0;j<=4;j++)

这个循环的一开始就会执行一句 j=0;所以在开始循环时j会重新给它赋值为0
所以还会循环的.

明白否?

你还是没弄懂FOR啊
for(j=0;j<=4;j++)
再次执行到这里时 J又被重新赋值为0了
所以会再执行一次循环