#include main(){ int k,j,m; for(k=6;k>=1;k--) {m=0;for(j=k;j<=4;j++)m=m+k*j;} printf("%d",m); }
循环嵌套的题
代码:
#include "stdio.h"
void main()
{
int k,j,m;
//for循环
//初始:k为6
//循环条件:k>=-1
//末尾循环体 k--
int count = 0;
for(k=6;k>=1;k--)
{
//m 重置为 0
m=0;
//for循环 循环嵌套
//初始:j为k的值
//循环条件:j<=4
//末尾循环体 j++
//第一次循环 k=6 k>=1 进入循环
//m=0 m重置为0
//j=k j=6
//j<=4
//不满足 不执行循环体内容
//则第一次 k=6 m=0
//k--
//第二次循环 k=5 k>=1 进入循环
//m=0 m重置为0
//j=k j=5
//j<=4
//不满足 不执行循环体内容
//则第一次 k=5 m=0
//k--
//第三次循环 k=4 k>=1 进入循环
//m=0 m重置为0
//j=k j=4
//j=4 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=0+4*4) m = 16 k = 4
//执行j++
//j=5 j<=4 不满足 不执行循环体内容
//k--
//第四次循环 k=3 k>=1 进入循环
//m=0 m重置为0
//j=k j=3
//j=3 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=0+3*3) m = 9 k = 3
//执行j++
//j=4 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=9+3*4) m = 21 k = 3
//执行j++
//j=5 j<=4 不满足 不执行循环体内容
//k--
//第五次循环 k=2 k>=1 进入循环
//m=0 m重置为0
//j=k j=2
//j=2 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=0+2*2) m = 4 k = 2
//执行j++
//j=3 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=4+2*3) m = 10 k = 2
//执行j++
//j=4 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=10+2*4) m = 18 k = 2
//执行j++
//j=5 j<=4 不满足 不执行循环体内容
//k--
//第六次循环 k=1 k>=1 进入循环
//m=0 m重置为0
//j=k j=1
//j=1 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=0+1*1) m = 1 k = 1
//执行j++
//j=2 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=1+1*2) m = 3 k = 1
//执行j++
//j=3 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=3+1*3) m = 6 k = 1
//执行j++
//j=4 j<=4 满足条件 进入循环
//执行 m=m+k*j (m=6+1*4) m = 10 k = 1
//执行j++
//j=5 j<=4 不满足 不执行循环体内容
//k--
//第七次循环 k=0 k>=1 条件不满足 循环结束
for(j=k;j<=4;j++)
{
m=m+k*j;
}
count++;
printf("第%d次,m=%d,k=%d \n",count,m,k);
}
printf("%d",m);
}
代码效果:
若回答能解决题目问题,还请题主采纳此回答
第一个for循环里面,每次都会执行一遍m=0,所以,最终m的值只取决于最后一次循环k=1的情况,如下:
for(k=6;k>=1;k--)
{
m=0;
for(j=k;j<=4;j++) //m的值最终是k=1的时候进行计算
m=m+k*j; // m= 1*1 + 1*2 + 1*3 + 1* 4 = 10
}