用所学过的指针知识,编写一个竞赛评分程序。(设有3位选手,5位评委)。输入包括选手的姓名(以单个字符表示)以及5位评委的分数(为0-100的正整数),评分规则为每位选手的成绩为去掉最高分和最低分后再取平均。要求用二维数组来设计程序。输出的格式为“排序 姓名 平均分 最高分 最低分”,要求由高到低对平均分排序,平均分保留2位小数。如下所示:
No name avg max min
1 c 82.33 99 66
2 b 80.12 92 70
3 a 80.11 98 60

C语言编程!跪求!谢谢大佬!输出就是下面的形式的
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2020-05-21 09:56关注
问题解决的话,请点采纳
// Q1073621.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h> void swap(int * a, int * b) { int t = *a; *a = *b; *b = t; } int main() { int score[3][5]; char names[3][100]; int max[3]; int min[3]; double avg[3]; int order[3]; for (int i = 0; i < 3; i++) { printf("请输入第%d位选手姓名:", i + 1); scanf("%s", &names[i][0]); for (int j = 0; j < 5; j++) { printf("请输入第%d位评委对第%d位选手的打分:", j + 1, i + 1); scanf("%d", &score[i][j]); } order[i] = i; int sum = score[i][0]; max[i] = min[i] = sum; for (int j = 1; j < 5; j++) { sum += score[i][j]; if (max[i] < score[i][j]) max[i] = score[i][j]; if (min[i] > score[i][j]) min[i] = score[i][j]; } avg[i] = (sum - max[i] - min[i]) / 3.0; } if (avg[order[0]] < avg[order[1]]) { swap(&order[0], &order[1]); } if (avg[order[1]] < avg[order[2]]) { swap(&order[1], &order[2]); } if (avg[order[0]] < avg[order[1]]) { swap(&order[0], &order[1]); } printf("No\tname\tavg\tmax\tmin\n"); for (int i = 0; i < 3; i++) { int j = order[i]; printf("No.%d\t%s\t%.2lf\t%d\t%d\t\n", i + 1, names[j], avg[j], max[j], min[j]); } return 0; }
请输入第1位选手姓名:a
请输入第1位评委对第1位选手的打分:100
请输入第2位评委对第1位选手的打分:92
请输入第3位评委对第1位选手的打分:87
请输入第4位评委对第1位选手的打分:91
请输入第5位评委对第1位选手的打分:99
请输入第2位选手姓名:b
请输入第1位评委对第2位选手的打分:72
请输入第2位评委对第2位选手的打分:64
请输入第3位评委对第2位选手的打分:100
请输入第4位评委对第2位选手的打分:100
请输入第5位评委对第2位选手的打分:55
请输入第3位选手姓名:c
请输入第1位评委对第3位选手的打分:79
请输入第2位评委对第3位选手的打分:83
请输入第3位评委对第3位选手的打分:91
请输入第4位评委对第3位选手的打分:91
请输入第5位评委对第3位选手的打分:98
No name avg max min
No.1 a 94.00 100 87
No.2 c 88.33 98 79
No.3 b 78.67 100 55
Press any key to continue . . .本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用 4