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

来源:6-12 综合练习

weixin_慕函数0528290

2022-01-29 20:54

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

  • 陈想想如是说
    2023-06-05 16:55:07

    t<=9-n;

    缺了“=”

  • weixin_慕神0279091
    2022-03-04 23:37:20

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

    这样吧应该

  • weixin_慕盖茨2597418
    2022-02-12 12:23:32

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

  • bb1234
    2022-02-10 14:24:33

    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;

            }            

         }      

     }


  • qq_慕雪9155268
    2022-01-30 20:09:16
     for (n = 1; n < 10; n++)
    n要从零开始,不然会让判断少一次


C语言入门

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

926217 学习 · 20797 问题

查看课程

相似问题