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

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


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

主要问题在排序函数

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

            }

        }

    }


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

crabant97

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 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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