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

哪位大佬帮忙看看哪里错了


#include <stdio.h>

#define N 10

int totalscore(int score[])

{

    for(int i=0;i<10;i++)

    {

        int total=0;

        total=total+score[i];

    }

    return total;

}


int maxscore(int score[])

{

    int max=score[0];

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

    {

        if(score[i]>max)

        {

            max=score[i];

        }

    }

    return max;

}


int minscore(int score[])

{

    int min=score[0];

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

    {

        if(score[i]<min)

        {

            min=score[i];

        }

    }

    return min;

}


int averagescore(int score[])

{

    int average;

    average=(totalscore(score))/10;

    return average;

}


void orderscore(int score[],N)

{

    for(int i=N-1;i>=0;i--)

    {

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

        {

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

            {

                int temp=score[j];

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

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

            }

        }

    }

    for(int i=0;i<10;i++)

    {

    printf("成绩降序排列为:",score[i]);

        

    }

}




int main()

{

    

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

    int Total=totalscore(score);

    int Max=maxscore(score);

    int Min=minscore(score);

    int Average=averagescore(score);

    

    printf("总分为:%d",Total);

    printf("最高分为:%d",Max);

    printf("最低分为:%d",Min);

    printf("平均分为:%d",Average);

    order(score);

    return 0;

}


提问者:weixin_慕先生2217783 2021-08-03 15:37

个回答

  • crabant97
    2021-08-17 20:02:13

    主要问题在排序函数

    1,首先调用的函数名order(score);和您定义的函数名void orderscore(int score[],N)就匹配不上,

    2,您的冒泡排序算法写错了,应该是数组越界了,

    第一层循环,i取值范围9->0,

    第二层循环,j取值范围0->9,这里就出问题了,j+1的取值范围就是1->10,当score[10]就是越界了

    3,可以把j的取值范围限制到0->8,就没问题了,这段修改一下

     for(int i=N-1;i>=0;i--)

        {

            for(int j=0;j<=i-1;j++)

            {

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

                {

                    int temp=score[j];

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

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

                }

            }

        }