内层循环中的变量 j 确实通过 j++ 进行自增操作。然而,在内层循环中,虽然 j 是根据 j++ 自增的,但实际上在每次内层循环中, sum 的累加操作都是基于外层循环的变量 i 和内层循环的变量 j。因此,在最后一次内层循环中,i 的值为 1,j 的值也为 1,导致 sum 的计算结果是 i*j = 1*1 = 1。
具体来说,外层循环的迭代次数是3次,内层循环的逻辑如下:
i 为 3 时,内层循环会执行 3 次,分别是 sum += 3*1; sum += 3*2; sum += 3*3;,最终 sum 的值为 18;i 为 2 时,内层循环会执行 2 次,分别是 sum += 2*1; sum += 2*2;,最终 sum 的值为 6;i 为 1 时,内层循环会执行 1 次,即 sum += 1*1;,最终 sum 的值为 1。因此,最终输出的结果是最后一次内层循环中 sum 的值为 1。
- #include
- int main(){
- int i,j,sum;
- for(i=3;i>=1;i--)
- {
- sum=0;
- for(j=1;j<=i;j++)
- sum+=i*j;
- }
- printf("%d\n",sum);
- }
输出结果:
当去掉外层循环的sum=0;时代码如下
- #include
- int main(){
- int i,j,sum;
- for(i=3;i>=1;i--)
- {
-
- for(j=1;j<=i;j++)
- sum+=i*j;
- }
- printf("%d\n",sum);
输出结果: