请问C语言的数组编程问题?
某竞赛小组有5名选手,每名选手的数据包括编号(编号为1至100之间的整数且各不相同)、姓名(中文姓名)、3个竞赛题目的成绩(成绩为1至100之间的整数)。
从键盘输入5名选手的编号、姓名以及3个竞赛题目的成绩,然后打印出平均分最低的选手信息作为淘汰选手公告。
要求如下:
1.程序中必须包含数组"int no[N"声明,no数组用来保存编号;
2.程序中必须包含数组"char name[N][50]"声明,name数组用来保存姓名;
3.程序中必须包含数组"int score[N][4]"声明,score数组用来存储每个选手3个竞赛题目的成绩和均分。
-输入描述
1 2345 //5个选手的编号
刘德华张学友郭富城刘嘉玲梁朝伟//5个选手的姓名
61 62 63 //编号为1选手的三个成绩
64 6571 //编号为2选手的三个成绩
72 7374 //编号为3选手的三个成绩
7581 82 //编号为4选手的三个成绩
83 8412 //编号为5选手的三个成绩
-输出描述
被淘汰的选手信息为:最低分为:79编号为:4姓名为:刘嘉玲
-提示
无 展开
C语言代码和运行结果如下:
根据提供的输入数据,4号选手刘嘉玲的平均分79明显是最高的,不应被淘汰
最低分应为5号选手梁朝伟的59分,所以图中输出与示例不一致
但结果应该没错,确实输出了最低分选手的相关信息,望采纳~
附源码:
#include <stdio.h>
#define N 5
int main() {
int no[N], score[N][4], i, j, sum, k = 0;
char name[N][50];
for (i = 0; i < N; i++)
scanf("%d", &no[i]);
for (i = 0; i < N; i++)
scanf("%s", name[i]);
for (i = 0; i < N; i++) {
sum = 0; // 记录每名选手总成绩并求平均分
for (j = 0; j < 3; j++) {
scanf("%d", &score[i][j]);
sum += score[i][j];
}
score[i][3] = sum / 3;
if (score[i][3] < score[k][3])
k = i; // 记录平均分最低的选手下标
}
printf("被淘汰的选手信息为:\n最低分为:%d 编号为:%d 姓名为:%s\n", score[k][3], no[k], name[k]);
return 0;
}