以下是表格:
i j k 输出
1 2 - -
2 2 3 -
3 2 3 18
3 3 3 27
————————————
所以最后输出的结果是:
1827
————————————
函数详解:
1、定义整型变量i,j,k
2、关于i的for循环,初始值:i=1,执行条件:i<=3,执行完循环后的操作:i++(也就是将i+1)
3、在关于i的for循环内嵌套了关于j的for循环,初始值:j=2,执行条件:j<=i,执行完循环后的操作:j++
4、在j的for循环内嵌套了关于k的for循环,初始值:k=3,执行条件k<=i,执行完的操作:k++
5、在这三重循环内的语句:printf("%d",i*j*k);将i*j*k的结果打印出来
6、三重循环外:printf("\n");打印换行
——————————————————————————————————————————
具体步骤:
1、定义变量
2、执行i的for循环,将i赋值为1,判断i<=3,成真,执行循环:
3、在i的for循环中,执行j的for循环,将j赋值为2,判断j<=i,当前j=2,i=1,条件为假,跳出循环,回到i的for循环
4、执行i++,当前i=2,判断i<=3,为真,执行循环:
5、在i的for 循环中,执行j的for循环,重新将j赋值为2,判断j<=i,当前j=2,i=2,判断条件为真,执行循环:
6、在j的循环中,执行k的循环,将k赋值为3,判断k<=i,当前i=2,k=3,条件为假,跳出循环。
7、返回j的循环,执行j++,j=3,判断j<=i(当前j=3,i=2)为假,跳出循环。
8、返回i的for循环,执行i++,i=3,判断i<=3,为真,执行循环。
9、在i的循环中,执行j的循环,j=2,判断j<=i(当前i=3),为真,执行循环
10、在j的循环中,执行k的循环,k=3,判断k<=i(当前i=3),为真,执行循环
11、循环内语句:printf("%d",i*j*k);打印出i*j*k的结果(当前i=3,j=2,k=3),输出:18
12、返回执行k++,判断k<=i(当前k=4,i=3),条件为假,跳出循环
13、返回执行j++,判断j<=i(当前j=3,i=3),条件成真,执行循环
14、执行k的循环,执行k=3,判断k<=i(当前k=3,i=3),条件成真,执行循环
15、执行printf("%d",i*j*k);再次打印i*j*k的结果(当前i=3,j=3,k=3),输出:27
16、返回执行k++,判断k<=i,(当前k=4,i=3),为假,跳出循环
17、返回执行j++,判断j<=i,(当前j=4,i=3),为假,跳出循环
18、返回执行i++,判断i<=3,(当前i=4),为假,跳出循环
19、转至三重循环后,执行printf("\n");打印换行
20、结束
最终结果:1827
因为打印时没加空格,所以最终的结果是连起来的,要想分开,请在printf("%d",i*j*k);的%d后加上空格
——————————————————————————————————
其实加上大括号看的要清楚的多,将你的函数格式改好看点,这样就很清楚哪个循环套哪个循环了,运行结果不会变:
#include "stdio.h"
void main()
{
int i,j,k;
for(i=1;i<=3;i++)
{
for(j=2;j<=i;j++)
{
for(k=3;k<=i;k++)
{
printf("%d",i*j*k);
}
}
}
printf("\n");
}
本程序有三种循环,姑且依次称之为:外循环,中循环,内循环。第一个printf语句是属于内循环的,只有内循环执行了,才会输出数据。
外循环当 i=1 时,中循环和内循环是不执行的,因为 j<=i 不满足。
外循环当 i=2 时, 中循环执行一次,但内循环不执行。
外循环当 i=3 时,中循环执行两次,每次中循环都执行一次内循环,所以内循环一共执行了两次,第一次:i=3, j=2, k=3,输出 18; 第二次:i=3, j=3, k=3,输出:27。
所以最终输出:1827。