c语言i++位置决定结果?

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:31:12
1,
5个数求和
#include"stdio.h"
main()
{
int s=0;
int i=1;
int a=0;
printf("请一共输入5个数字!\n");
while(i<6)
{ printf("请输入第%d个数字:",i);
scanf("%d",&a);
i++;
s=s+a;
}
printf("5个数字的和为:%d",s);
}

--------------------------------
i++;
s=s+a;
为什么这两项互换结果不变?

2,
求累加
#include "stdio.h"
int sigma(int n)
{
int i=0,s=0;
while(i<=n)
{
i++;
s=s+i;
}
return s;
}
int main()
{
int m,sum;
scanf("%d",&m);
sum=sigma(m);
printf("sum=%d",sum);
}

------------------------------------
i++;
s=s+i;
互换结果不同

为什么?

第一个程序中i并不参与累加运算,只是记录累加的数的个数,每输入一个数,i就自增1,最后限制次数<6,
i++;
s=s+a;
明显两句话中没有相同的变量。
第二个程序中
i++;
s=s+i;
明显i是参与累加运算的
如果是
i++;
s=s+i;
的话,计算结果就=1+2+3.....+(m+1)
而若是
s=s+i;
i++;结果就是0+1+2+3.....+m

是作业题吗?自己想吧。

这个实在再明显不过了。如果你不自己学,告诉你答案也没有什么用。