为了账号安全,请及时绑定邮箱和手机立即绑定

我的平均分错在哪里?


#include <stdio.h>

int total(int score[])

{

    int i,sum;

    for(i=0;i<=9;i++)

    {

    sum += score[i];

    }

    return sum;

}



float aver(int score[])

{

    return total(score);

}



void a(int score[])

{

    int i,j;

    for(i=8;i>=0;i--)

    {   

        for(j=0;j<=i;j++)

        {

            if(score[j]>score[j+1])

            {

                int temp;

                temp=score[j];

                score[j]=score[j+1];

                score[j+1]=temp;

                

            }

        }

        

    }

   


}

int main()

{

    int i;

    int score[10]={67,98,75,63,82,79,81,91,66,84};

    printf("总分%d\n",total(score));

    printf("平均%.1f\n",aver(score));  

    

    a(score);

    for(i=0;i<=9;i++)

    {

    printf("%d\n",score[i]);

    }


   

    return 0;

}


正在回答

3 回答

第一个求和函数中sum没有在开始赋予初值0,你的main函数中求和调用了一次,求平均调用了一次,求平均时的total返回的是每个元素加个两次的和,导致你求出的平均值是实际平均值78.7的两倍,那为什么不是157.4呢?因为你aver函数中total(score)返回的是整型值,舍去小数是157,而aver函数是float型,所以返回值被转换成了浮点数157.0.

0 回复 有任何疑惑可以回复我~
#1

qq_二狗君_0 提问者

谢谢
2016-12-08 回复 有任何疑惑可以回复我~

你没有设置总个数,平均数函数中也没有除以总个数

0 回复 有任何疑惑可以回复我~

你只是返回total了,没有平均啊。

0 回复 有任何疑惑可以回复我~
#1

qq_二狗君_0 提问者

float aver(int score[]) { return total(score)/10; } 失误失误 总分787 平均157.0 63 66 67 75 79 81 82 84 91 98 结果是这样,
2016-12-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我的平均分错在哪里?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信