一道C语言编程题,请高手帮忙!

来源:百度知道 编辑:UC知道 时间:2024/05/08 15:56:18
程序代码如下:
#include <stdio.h>
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
for(i=3;i>=1;i--)
{
sum=0; 不论第一个for循环执行多少次,sum都被重新赋值为0,当i=1做最后一次循环时,在进入第二个for循环之前sum=0进入第二个for循环后,for(j=1;j<=i;j++) 等价于
for(j=1;j<=1;j++),所以只执行一次循环,所以此时sum+=i*j等价于sum=sum+i*j=sum+1*1=0+1=1;所以最后sum=1

sum=0; //罪魁祸首在这里
每次都从新开始,加完一遍,清零
所以计算是最后一次的,那是i = 1, j<=i =1

所以结果就是1

如果你想求所有的和,把那句去了就O了

答案不可能是1,虽然我去编译器验证,但是绝对不可能是1 。除非你题目抄错了

明显是1,每次i取值,sum都置为0,正确的应该sum在循环的外面