内层循环中的变量 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<stdio.h>
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<stdio.h>
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);
输出结果: