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

希望大佬帮我看看这个排序部分的代码,我要崩溃了

#include <stdio.h>

int getsum(int score[10])

{

    int sum = 0;

    int i;

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

    {

        sum = sum + score[i];

        if (i == 9)

        {

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

        }

       

    }

    return 0;

}

int getmax(int score[10])

{

    int max,i;

    int index;

    max = score[0];

    index = 0;

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

    {

         

        if (score[i] > max)

        {

            max = score[i];

            index == i;

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

        }

        

        

    }

    return 0;

}

int getmin(int score[10])

{

    int j;

    int min;

    min = score[0];

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

    {

        if (score[j] < min)

        {

            min = score[j];

            printf("最低分为%d\n", min);

        }

    }

    return 0;

}

float average(int score[10])

{

    float sum = 0;

    float aver;

    int k;

    for (k = 0; k < 10; k++)

    {

        sum = sum + score[k];

        if (k == 9)

        {

            aver = sum / 10;

            printf("平均分为%f\n", aver);

        }

    }

    return 0;

}

int down(int score[10])

{

    int n, t;

    

    for (n = 1; n < 10; n++)

    {

        for (t = 0; t <9-n; t++)

        {

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

            {

                int temp;

                temp = score[t+1];

                score[t+1] = score[t];

                score[t] = temp;

                

            }

        }

    }

    printf("考试成绩降序如下: \n");

    for (n = 0; n < 10; n++)

    {

        

            printf("%d ", score[n]);

        

    }

    return 0;

}

int main()

{

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

    getsum(score);

    getmax(score);

    getmin(score);

    average(score);

    down(score);

    return 0;

}

排序结果前8个都正常,最后一个数却是84,试了几次都不知道毛病出在哪里

正在回答

5 回答

t<=9-n;

缺了“=”

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

for (t = 0; t <10-n; t++)

这样吧应该

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

这个排序部分题目要求从大到小排,就只需要把从小到大排的程序中改一个地方就可以了,就把arr[j]>arr[j+1]中的">"改成"<"就可以了,其他的都不用变的

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

for(i=N-1-1;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;

        }            

     }      

 }


0 回复 有任何疑惑可以回复我~
 for (n = 1; n < 10; n++)
n要从零开始,不然会让判断少一次


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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

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

进入课程

希望大佬帮我看看这个排序部分的代码,我要崩溃了

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