一道简单的c语言题(详细点)

来源:百度知道 编辑:UC知道 时间:2024/05/09 16:18:59
以下程序输出结果是:()
#include<stdio.h>
void 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);
}

1 因为第一重for循环每次执行都将sum清零了,所以只需看最后一次循环即i=1的时候sum的结果,此时,i=1,j=1,所以sum=sum+1*1结果为1

i=3时 :
(1)j=1 1<=3为真 j++(j=2)
sum=0+1*3=3
(2)j=2 2<=3为真 j++(j=3)
sum=3+2*3=9
(3)j=1 3<=3为真 j++(j=4)
sum=9+3*3=18

i=2时:
(1)j=1 1<=2为真 j++(j=2)
sum=0+1*2=2
(2)j=2 2<=2为真 j++(j=3)
sum=2+2*3=8

i=1时:
(1)j=1 1<=1为真 j++(j=2)
sum=0+1*1=1

最后输出结果 sum为1

结果为 1
可以直接装个编译器输入程序再编译运行就可以得到答案了,呵呵

1……貌似是因为你的sum在for循环中副值了。虽然每次都有循环,但是每次循环开始时,sum都会变为0,开始下一次循环。最后一次循环时,i=1,j=1,所以sum就是1了。
你可以这样:
#include<stdio.h>
void main()
{
int i,j,sum=0;
for(i=3;i>=1;i--)
{for(j=1;j<=i;j++)sum+=i*j;
}
printf("%d\n",sum);
}
吼吼,应该就是你想要的答案了:25.

明显是1啊azurerzy说的一点没错