一道C语言问题 麻烦帮我解释一下!谢谢了!

来源:百度知道 编辑:UC知道 时间:2024/06/17 07:47:19
下述程序的输出结果为______
main()
{int p=1,s=0,i;
for(i=1;i<=5;i++)
s+=p*=i;
printf("sum=%d\n",s);
}
这道题的答案是多少?怎么做的?谢谢了!

答案是153.s+=p*=i;是从右向左计算的,先算p*=i再计算s+=p,例如第一次循环时i=1,此时执行p*=i后p的值是1,再执行s+=p后s的值是1.
for(i=1;i<=5;i++)
s+=p*=i;
等价于
for(i=1;i<=5;i++)
{
p*=i;
s+=p;
}

sum=153
完整的代码如下,我运行的
#include<stdio.h>
int main()
{int p=1,s=0,i;
for(i=1;i<=5;i++)
s+=p*=i;
printf("sum=%d\n",s);
system("PAUSE");
return 0;
}