搜索
查看: 4407|回复: 6
打印 上一主题 下一主题

求1到100之间奇数之和的平均值,大家给看看,哪里错了

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-4 16:35:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
//求1到100之间奇数之和的平均值
#include <stdio.h>
int main()
{
        int i, j, avg;//avg表示平均值,j表示奇数的个数。
        int mun = 0;

        for(i=1; i<=100; ++i)
        {
                if(i%2 != 0)
                {
                        mun = mun+i;
                        j = j+1;
                }
        }
        avg = mun/j;//avg表示, mun表示奇数之和,j表示奇数的个数
        printf("avg = %d\n", avg);

        return 0;
}

最佳答案

查看完整内容

因为没给j初始值 循环前面加一句 j= 0; 就可以得到预期值 另外我觉得给avg一个int型也是不好的,因为计算前不知道它是不是整数 所以应该写 double avg; ..... avg = (double)mun / j; printf("avg = %f\n",avg);
沙发
发表于 2013-3-4 16:35:10 | 只看该作者
因为没给j初始值

循环前面加一句 j= 0;
就可以得到预期值

另外我觉得给avg一个int型也是不好的,因为计算前不知道它是不是整数
所以应该写
double avg;
.....

avg = (double)mun / j;
printf("avg = %f\n",avg);
板凳
发表于 2013-3-6 16:01:13 | 只看该作者
本帖最后由 shicz86 于 2013-3-6 16:02 编辑

你的代码简洁些好,下面是我的:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int ave,i,sum=0;
    for(i=1;i<101;i+=2)
    sum += i;
    ave = sum / 50;
    printf("%d\n",ave);
    return 0;
}
你的貌似++i用得不对,i++才对
地板
发表于 2013-3-6 18:38:54 | 只看该作者
shicz86 发表于 2013-3-6 16:01
你的代码简洁些好,下面是我的:
#include
#include

++i是正确的
for(; ; ++i)和for(; ; i++)的含义是一样的


a = i++;
a = ++i;
或者
a[i++] = 1;

这些情况下才不一样
5#
发表于 2013-3-7 21:42:47 | 只看该作者
一楼正解,楼主对j赋值为0即可
6#
发表于 2013-3-21 10:02:42 | 只看该作者
应该是i++吧    ++i是先把变量i的值加1然后再进行计算  运行后i=2了奇数1没被算进去
7#
发表于 2013-4-5 13:53:55 | 只看该作者
615183797 发表于 2013-3-21 10:02
应该是i++吧    ++i是先把变量i的值加1然后再进行计算  运行后i=2了奇数1没被算进去

第一次++i或者i++是在循环体里面的语句执行完了之后

这里用++i和i++是一样的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表