c语言:应用结构体类型,编程输入n个学生的姓名和高级语言、数据结构、算法分析三门课程的成绩,输出总分第一名的学生姓名。 输入格式: 若干行,一行一组数据,包含姓名(不超过20个字符,中间无空格)和三科分数,所有分数为整数。 输出格式 按输入顺序输出总分第一名的学生姓名,如果有并列第一名的情况,按顺序只需输出第一个最高分的姓名。 输入样例: Madaha 80 90 100 Jibuzhu 95 85 98 Burenzhen 95 85 90 Xueba 100 80 98 输出样例: Jibuz
时间: 2023-11-28 16:48:09 浏览: 227
以下是一份可能的解答:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_STUDENT_NUM 100 // 最大学生数量
// 定义学生结构体
struct student {
char name[MAX_NAME_LEN + 1]; // 姓名字符串,+1 是为了留一个位置存放结束符 '\0'
int lang; // 高级语言成绩
int ds; // 数据结构成绩
int algo; // 算法分析成绩
};
int main() {
struct student students[MAX_STUDENT_NUM]; // 定义学生数组
int n; // 学生数量
scanf("%d", &n); // 先输入学生数量
// 输入每个学生的信息
for (int i = 0; i < n; i++) {
scanf("%s %d %d %d", students[i].name, &students[i].lang, &students[i].ds, &students[i].algo);
}
// 找出总分第一名
int max_score = -1; // 最高成绩
char max_name[MAX_NAME_LEN + 1]; // 最高成绩对应的姓名
for (int i = 0; i < n; i++) {
int total_score = students[i].lang + students[i].ds + students[i].algo; // 计算总分
if (total_score > max_score) { // 如果当前总分比最高分还高
max_score = total_score; // 更新最高分
strcpy(max_name, students[i].name); // 更新最高分对应的姓名
}
}
// 输出最高分对应的姓名
printf("%s", max_name);
return 0;
}
```
解释如下:
1. 定义了一个 `struct student` 结构体,包含了姓名和三门课程的成绩。注意,为了方便输入,姓名使用了字符数组,而不是字符串指针。
2. 在 `main` 函数中,先输入学生数量,然后再输入每个学生的信息。
3. 输入完毕后,遍历一遍所有学生,计算每个学生的总分,并找出最高分对应的学生姓名。
4. 最后输出最高分对应的学生姓名即可。
阅读全文