今天我写了个C程序:求1到100以内所有的奇数的平均值

结果一运行,发现什么都没有,以下是在下的代码,请问各位高手哪错了?
# include <stdio.h>

void main ()

{
int i;
int sum,cnt=0;
double avg;
for (i=1;1<=50;++i)
{

sum=sum+2*i-1;
cnt=cnt+2;
avg=1.0*sum/cnt;
}

printf("avg=%f\n",avg);

}

cnt = cnt +2 是错的呀, 1到100的奇数个数不是这么算的
还有就是avg可以放到循环外面来计算。
循环里面的++i也是不对的,这样的话是从i=2开始计算,应该用i++追问

++i和i++有区别吗

追答

有啊。++i是先自加然后参与运算,i++是运算完了以后自加

追问

请问大侠什么时候用前自增什么时候用后自增

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-15
for 里面条件再看看!
1<50永远成立的,一致在for里循环,根本跑不到输出追问

那把1改成i,变成i<50可以吗,结果好像还是不对啊。结果显示:avg=-8589909.600000怎么回事,平均值不可能为负,请问大侠除了1错了还有哪错了

追答

sum没初值吧,大概,你试试吧。
记得不赋初值的话它的值是分配的内存里的值是随机的,所以要初始化

追问

sum等于0,不是赋值了吗

追答

既然都已经解决了,那就可喜可贺可喜可贺!
务必请你以后也这么写!

本回答被提问者采纳
相似回答