我的平均分错在哪里?

来源:6-12 综合练习

qq_二狗君_0

2016-12-07 08:56


#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回答

  • Staularu
    2016-12-07 19:59:16
    已采纳

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

    qq_二狗君...

    谢谢

    2016-12-08 08:18:32

    共 1 条回复 >

  • 慕粉3655201
    2016-12-07 15:09:01

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

  • 技不如人_甘拜下风
    2016-12-07 14:49:15

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

    qq_二狗君...

    float aver(int score[]) { return total(score)/10; } 失误失误 总分787 平均157.0 63 66 67 75 79 81 82 84 91 98 结果是这样,

    2016-12-07 15:07:01

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926209 学习 · 20797 问题

查看课程

相似问题