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

来源:6-12 综合练习

weixin_慕先生2217783

2021-08-03 15:37


#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;

}


写回答 关注

1回答

  • 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];

                }

            }

        }


    craban...

    int temp=score[j]; score[j]=score[j+1]; score[j+1]=score[j]; 这里也错了,没有交换成功,改为这样: int temp=score[j]; score[j]=score[j+1]; score[j+1]=temp;

    2021-08-17 20:22:45

    共 1 条回复 >

C语言入门

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

924607 学习 · 20763 问题

查看课程

相似问题