SIJ2005 2024-06-19 10:41 采纳率: 50%
浏览 2
已结题

C语言问题,排序并保留编号

对成绩进行排序,并且要输出其编号
成绩排序好了,但是编号输出错误
请问该如何修改

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>  
int main()
{
    int scores[10][6];
    float finalScores[10];
    int i = 0, j = 0, k = 0;
    int maxScore = 0, minScore = 0;
    for (i = 0; i < 10; i++)
    {
        printf("Please input singer %d's score: ", i + 1);
        for (j = 0; j < 6; j++)
        {
            scanf("%d", &scores[i][j]);
        }
    }
    for (i = 0; i < 10; i++)
    {
        maxScore = scores[i][0];
        minScore = scores[i][0];
        for (j = 1; j < 6; j++)
        {
            if (scores[i][j] > maxScore)
            {
                maxScore = scores[i][j];
            }
            if (scores[i][j] < minScore)
            {
                minScore = scores[i][j];
            }
        }
        float sum = 0;
        for (j = 0; j < 6; j++)
        {
            sum += scores[i][j];
        }
        sum = sum - maxScore - minScore;
        finalScores[i] = sum / 4;
    }
    for (i = 0; i < 9; i++)
    {
        for (j = i + 1; j < 10; j++)
        {
            if (finalScores[i] < finalScores[j])
            {
                float temp = finalScores[i];
                finalScores[i] = finalScores[j];
                finalScores[j] = temp;
                int tempIdx = i + 1;
                i += 1;
                while (i > 0 && finalScores[i - 1] < finalScores[j])
                {
                    scores[i][k] = scores[i - 1][k];
                    i--;
                }
                scores[i][k] = scores[j][k];
                int tempSinger = i + 1;
                for (k = i; k > j; k--)
                {
                    tempSinger = scores[k - 1][6] = tempSinger - 1;
                }
                scores[j][6] = tempSinger;
            }
        }
    }
    for (i = 0; i < 10; i++)
    {
        printf("Singer %d: %.2f\n", scores[i][6], finalScores[i]);
    }
    return 0;
}

原文如下
有10名歌手(编号为1-10)参加歌咏比赛,另有6名评委打分,每位歌手的得分从键盘输入:先提示“Please input singer’s score: ”,再依次输入第1个歌手的6位评委打分(10分制,分数为整型,分数之间使用空格分隔),第2个歌手的6位评委打分…以此类推。计算出每位歌手的最终得分(扣除一个最高分和一个最低分后的平均分,最终得分保留2位小数),最后按最终得分由高到低的顺序输出每位歌手的编号及最终得分。要求:歌手信息包括歌手编号,6个评委打分,平均分。

  • 写回答

2条回答 默认 最新

  • 为荣誉而拼搏少年 2024-06-19 17:28
    关注

    要实现什么?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月27日
  • 已采纳回答 6月19日
  • 创建了问题 6月19日

悬赏问题

  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥20 汇川小型plc控制小米微电机
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送
  • ¥15 SQLite 出现“Database is locked” 如何解决?
  • ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序