第一行输入一个整数n表示一共有n个学生( 1 =< N <= 100); 第二行输入这n个学生的姓名(小于等于10个字符)、语文成绩、数学成绩、英语成绩。分两行输出总分最高和最低的学生名字和各项成绩(如有相同总分则输出第一次出现的学生)。用C语言
时间: 2023-07-16 09:15:31 浏览: 86
C语言输入学生成绩,计算并输出这些学生的最低分、最高分、平均分。
以下是一个可能的解法:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 100
#define MAX_NAME_LEN 11
struct Student {
char name[MAX_NAME_LEN];
int chinese_score;
int math_score;
int english_score;
};
int main() {
int n;
struct Student students[MAX_N];
int i, max_idx = 0, min_idx = 0;
// 输入学生信息
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%s %d %d %d", students[i].name, &students[i].chinese_score,
&students[i].math_score, &students[i].english_score);
}
// 找出总分最高和最低的学生
for (i = 1; i < n; i++) {
int cur_total = students[i].chinese_score + students[i].math_score +
students[i].english_score;
int max_total = students[max_idx].chinese_score + students[max_idx].math_score +
students[max_idx].english_score;
int min_total = students[min_idx].chinese_score + students[min_idx].math_score +
students[min_idx].english_score;
if (cur_total > max_total) {
max_idx = i;
}
if (cur_total < min_total) {
min_idx = i;
}
}
// 输出结果
printf("Total Highest Score: %s %d %d %d\n", students[max_idx].name,
students[max_idx].chinese_score, students[max_idx].math_score,
students[max_idx].english_score);
printf("Total Lowest Score: %s %d %d %d\n", students[min_idx].name,
students[min_idx].chinese_score, students[min_idx].math_score,
students[min_idx].english_score);
return 0;
}
```
这个程序定义了一个 `Student` 结构体来存储每个学生的信息,包括姓名和三门课程的成绩。首先读入学生数和每个学生的信息,然后使用一个循环找出总分最高和最低的学生的下标,最后输出对应的学生信息。
需要注意的是,在输入学生姓名时,可以直接使用 `%s` 格式化字符串,因为字符串本身就是一个字符数组。还需要使用 `strcpy()` 函数把输入的字符串拷贝到结构体中。
阅读全文