请问这是怎么运行的?
看不懂怎么得到这样的结果
clude <stdio.h>
#include<math.h>
int main()
{
int i, j, k;
printf("i j k\n"); // 控制台打印出i j k 后换行
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); // 控制台打印出i j k的值后换行
return 0;
/**
* 第一次循环,执行第一个for i=0,第二个for j=0,第三个for k=0,执行printf,输出第一行0 0 0
* k++后,此时i=0,j=0,k=1,然后第三个for做循环判断k<2;输出第二行 0 0 1
* 第三个for再次循环,此时i=0,j=0,k=2,判断k<2,不成立,则跳到第二个for做循环
* 此时i=0,j=1,执行第三个for循环,k=0,输出第三行 0 1 0
* 继续执行第三个for循环,i=0,j=1,k=1输出第四行 0 1 1
* 继续执行第三个for循环,i=0,j=1,k=2,k<2不成立,
* 跳到第二个for循环,j=2,j<2不成立 ,
* 跳到第一个for循环,此时i=1,i<2成立,执行第二个for循环,j=0,执行第三个for循环
* k=0,输出第五行 1 0 0 ,
* 继续执行第三个for循环,此时i=1,j=0,k=1,k<2成立输出第六行 1 0 1
* 继续执行第三个for循环,此时i=1,j=0,k=2,k<2不成立,
* 跳到第二个for循环,此时i=1,j=1,k=0,j<2成立
* 继续执行第三个for循环,此时i=1,j=1,k=0,k<2成立输出第七行 1 1 0
* 继续执行第三个for循环,此时i=1,j=1,k=1,k<2成立输出第八行 1 1 1
* 继续执行第三个for循环,此时i=1,j=1,k=2,k<2不成立
* 跳到第二个for循环,此时i=1,j=2,j<2不成立
* 跳到第一个for循环,此时i=2,i<2不成立
* 退出第一个for循环,程序执行结束
*
* /
}
i=0:
j=0:最内层for循环:k为0,1,所以输出 : 0 0 0 0 0 1;最内层结束,第二层的j=0结束,j++,此时i=0
j=1时:最内层for循环:k为0,1,所以输出 :0 1 0 0 1 1;最内层结束,第二层的j=1结束,第二层也结束了,i++,i变为1
i=1:
j=0:最内层for循环:k为0,1,所以输出 : 1 0 0 1 0 1;最内层结束,第二层的j=0结束,j++,此时i=1
j=1时:最内层for循环:k为0,1,所以输出 :1 1 0 1 1 1;最内层结束,第二层的j=1结束,第二层也结束了,i++,i变为2,最外层循环结束
这不是嵌套循环吗
i执行两次
j执行四次 (2的平方次)
k执行八次 (2的三次方次)
输出是在k循环中,所以输出八次