关于c语言中的嵌套for循环
发布网友
发布时间:2022-04-20 16:39
我来回答
共5个回答
热心网友
时间:2023-08-02 13:16
main()
{
<1> int i,j,k;
<2> printf("i j k \n");
<3> for(i=0;i<2;i++)
<4> for(j=0;j<2;j++)
<5> for(k=0;k<2;k++)
<6> printf("%d %d %d \n",i,j,k);
}
for循环的嵌套:
就上面的代码而言,通俗的讲,我们可以说<3>套<4>,<4>套<5>
但是实际上<3>这句只是for循环的头部,其主体是<4><5><6>这三句所组成的另一个for循环。
打个比方来讲,地球从外到内不是分好几层的?for循环就跟地球一样,这里的<3>就相当于地表,<4>是地幔,以此类推。
从执行顺序来讲,我们先不讲三层的,讲个两层的好了。
比如上面的<4><5><6>三句:
<4> for(j=0;j<2;j++)
<5> for(k=0;k<2;k++)
<6> printf("%d %d %d \n",i,j,k);
第<4>句:对于从0到2的每一个j(也就是0和1了),都要执行一次<5><6>构成的for循环。
而<5>呢?是对于从0到2的每一个k(同样也是0和1),都要执行一次<6>这个句子。
总的来讲,<6>这个句子在这里一共执行了2*2=4次,第一次执行的时候j=0,k=0,第二次的时候j=0,k=1,第三次的时候j=1,k=0,第四次的时候j=1,k=1。
另外,也有人问过关于嵌套for循环的问题,请参看这里的解答:
http://zhidao.baidu.com/question/41460492.html
热心网友
时间:2023-08-02 13:17
i=2的情况
先执行第一个for循环
i=2<100成立
执行
第二个for循环
j=2<=(2/2)也就是
j=2<=1
不成立
执行第二个if语句
j=2>(2/2)
成立
执行printf语句,输出
2是质数
i=5的情况
i=5<100成立
j=2<=(5/2)
就是
j=2<=2成立
执行第一个if语句
if(!(5%2))=if(!1)=if(0)
也就是说结果为假,
不成立,不执行break语句
执行j++,那
j=j+1=2+1=3,所以
j=3
再执行
j<=(i/j)
3<=5/2
不成立,退出第二循环,执行第二个if语句
if(3>5/3)
成立,执行printf语句,输出5是质数
*注意:第一个for循环有两条语句
第二个for循环只有一条语句
热心网友
时间:2023-08-02 13:17
循环的过程是先执行第一个大循环for(i=0;i<3;i++),此句中先给i赋值0,在判断条件i<3是否成立赋值后的i=0了,所以条件成立,成立则做下面一条语句,就是for(j=0;j<4;j++),同样这个循环还是先赋值j=0,在进行判断j<4是否成立,成立就再做下一句。
此时scanf语句后面已经没有语句了,所以程序就会跳上去到第二个循环中,即for(j=0;j<4;j++)这句话中,可能你会问为什么不是第一句
(因为在循环嵌套中只有循环体执行完成所以的任务后才执行下面的语句,就是for(j=0;j<4;j++)
要全部执行完毕才能执行后面的语句。即j<4条件为假时跳出)跳到for(j=0;j<4;j++)这个循环体以后。就会自动加一,就是执行j++(注:在这个for里面的j=0不再执行),这个赋值过程只在开始时执行。所以
j
这个循环要执行到条件不满足时停止,即最后j的值要>=4.。
这样
j
这个循环就结束了。结束后又跳到了第一句。因为第二个for是包含在第一个for
里的。只有第一个for
里包含的语句全部执行完后第一个for就再一次执行i++,i
变成了2,判断条件i<3成立,就再执行下一句,所以下面的for(j=0;j<4;j++)又要再一次执行。执行完后就在回到第一个for执行。
原理:
i=0,j
执行4次,给a[0][0],a[0][1],a[0][2],a[0][3]赋值
i=1,j
执行4次,给a[1][0],a[1][1],a[1][2],a[1][3]赋值
i=2,j
执行4次,给a[2][0],a[2][1],a[2][2],a[2][3]赋值
i=3跳出.
还有不懂再问
热心网友
时间:2023-08-02 13:18
相当于下面的
main()
{
int i,j,k;
printf("i j k \n");
for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{for(k=0;k<2;k++)
printf("%d %d %d \n",i,j,k); //上面的一共执行2*2*2=8次
( 1. i=0,j=0,k=0
2. i=0,j=0,k=1
3. i=0,j=1,k=0
4. i=0,j=1,k=1
5. i=1,j=0,k=0
6. i=1,j=0,k=1
7. i=1,j=1,k=0
8. i=1,j=1,k=1 )
}
}
}
相信能够明白的
热心网友
时间:2023-08-02 13:19
把里面的for循环当成普通的程序段不就看懂了