c语言中关于多个for循环的问题

#include<stdio.h>
void main()
{
int i,j;
for(i=0;i<3;i++)
for(j=2;j<5;j++)
printf("AA\n");
printf("BB\n");
}
在这个程序里面,两个for是按照什么样的循环次序来进行循环的,最终的结果为什么是9个AA,一个BB

这个实际上不是 多个for循环的问题,而是一个语句的作用范围的问题

当你需要循环的语句只有一句的时候,就可以写成这样
for(i=0,i<3;i++)
printf("AA\n");

如果有多个的话
就需要用大括号括起来
for(i=0,i<3;i++)
{
printf("AA\n");
printf("BB\n");
printf("CC\n");
}
括起来的话,这三句都将循环三次。

而不论大括号里括了多少条语句,for循环本身也只算一个语句。
因此,可以分析你刚才那段代码
for(i=0;i<3;i++)
for(j=2;j<5;j++)
printf("AA\n");
printf("BB\n");
先看外边的for ,它没有使用大括号{} ,因而只将离他最近得一条语句进行循环
而这条语句也是一个for循环。 第二个for 循环也没有大括号,因此也只将离他最近得语句进行循环。即将printf("AA\n");进行循环。
而最后的printf("BB\n");没有在任何循环里边,所以只执行一次。
for循环的嵌套,从外边进入里边,将里边的循环当做一个整体,几次循环执行完毕后,再回过头来进行外边循环。总的来说,将里边的循环看做整体,比较有利于理解。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-30

1、最开始进入的是第一层for循环,在进入第二层for循环,一直到最后一层for循环执行完,再返回上一层for循环一次,进入下一层循环,一直到所有循环结束。


2、例如:

for(int i=0;i<5;i++)
{     for(int j=0;j<5;j++)
         {
             for(int l=0;l<5;l++)
                 printf("%d ",l);
                 printf("\n");
          }
           printf("\n");
}
/*这里是3层循环,第一次是i=0,j=0,l=0,一直l=4;在返回j=1,l=0,一直到l=4;再返回上一层循环,直到j=4;再返回i=1,直到i=4结束整个循环,结果就是循环125次:
(最外层是是对应5组,第二层是对应25行,第三层是对应0—4)*/

第2个回答  推荐于2017-11-25
#include<stdio.h>
void main()
{
int i,j;
for(i=0;i<3;i++) //第一个外循环,循环体为下面两句for(j=2;j<5;j++)和printf("AA\n");变量i每递增一次,循环体(第二个for循环)执行一次
for(j=2;j<5;j++) //第二个内循环,循环体是printf("AA\n");变量j每递增一次,printf("AA\n")执行一次
printf("AA\n");
printf("BB\n"); //这条语句在两个for循环的循环体之外,只执行一次。
}本回答被网友采纳
第3个回答  2013-05-02
先执行一次最外层的for语句,然后执行第二层的for语句,直到第二层执行完毕,又回到第一层的for语句执行一次,再执行第二层,结果是外循环的for语句执行3次,第二层的for循环执行(5-2)*3=9次,第二层的循环每执行一次就输出一个AA,所以输出9个AA,printf("BB\n")是在for语句的外边,所以只在最后执行一次,for语句如果每次循环都要执行一条以上的语句就要在语句外边加花括号,即如果要执行printf("AA\n");printf("BB\n");两条语句的话就要写成
{printf("AA\n");
printf("BB\n");}这种形式。
第4个回答  2013-05-02
#include<stdio.h>
void main()
{
int i,j;
for(i=0;i<3;i
for(j=2;j<5;j++)
printf("AA\n");++)/*这里的两个for语句,控制的是打印AA的个数的语句,i可取0,1,2;j可取2,3,4,刚好打印9个AA
printf("BB\n");/*这个语句跟for循环没关系,只是单独的一个语句,所以打了一个BB
}