对成绩进行排序,并且要输出其编号
成绩排序好了,但是编号输出错误
请问该如何修改
#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个评委打分,平均分。