问答详情
源自:6-12 综合练习

运行不成功有啥问题?

加了算平均数的部分,计算的和也会翻一倍,是为啥

提问者:ANU_Yang 2017-12-21 20:36

个回答

  • 张二狗的彳亍
    2017-12-22 15:07:07

    你没把sum 归零,在计算平均值时又计算了一遍,正确程序如下

    #include <stdio.h>

    #define N 10

    int sum;

    int max,min,ave;

    int getsum(int score[])

    {

    int i;

    sum=0;

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

    {

    sum+=score[i];

    }

    return sum;

    }


    int average(int score[])

    {


    ave=getsum(score)/N;

    return ave;

    }



    int sortscore(int score[])

    {

        int i,j;

        int temp;

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

        {

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

            {

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

            { temp=score[j];

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

              score[j+1]=temp;

            }

            }

    }

    max=score[9];

    min=score[0];

    return max,min;

    }


    void descendscore(int score[])

    {

    int i,j;

        int temp;

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

        {

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

            {

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

            { temp=score[j];

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

              score[j+1]=temp;

            }

            }

    }

    for (i=0;i<=N-1;i++)

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

    }


    int main()

    {

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

        getsum(score);

        sortscore(score);

        average(score);

       printf("总分是%d\n",sum);

       printf("最高分是%d\n",max);

    printf("最高分是%d\n",min);

        printf("平均分是%d\n",ave);

        descendscore(score);

        

        return 0;

    }