现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的字符串,没有空格)、语文、数学、英语成绩(均为不超过 150 的自然数)。总分最高的学生就是最厉害的。请设计合理的结构体来存放输入数据,并对其进行操作,输出最厉害的学生各项信息(姓名、各科成绩)。如果有多个总分相同的学生,输出靠前的那位。 【输入形式】 第一行一个整数 N。 接下来 N 行,每行依次为学生姓名,语文成绩,数学成绩,英语成绩,以空格隔开。 【输出形式】 输出最优秀的一位学生,格式同输入。
时间: 2024-03-22 22:37:01 浏览: 259
c语言输出字符串中最大对称子串长度的3种解决方案
以下是C语言编写的程序,可以读入N名学生的信息,找到总分最高的学生并输出其姓名和各科成绩:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char name[9];
int chinese;
int math;
int english;
int total;
} Student;
int main() {
int n;
scanf("%d", &n);
Student students[n];
for (int i = 0; i < n; i++) {
scanf("%s %d %d %d", students[i].name, &students[i].chinese, &students[i].math, &students[i].english);
students[i].total = students[i].chinese + students[i].math + students[i].english;
}
int maxIndex = 0;
for (int i = 1; i < n; i++) {
if (students[i].total > students[maxIndex].total) {
maxIndex = i;
}
}
printf("%s %d %d %d\n", students[maxIndex].name, students[maxIndex].chinese, students[maxIndex].math, students[maxIndex].english);
return 0;
}
```
该程序首先定义了一个名为Student的结构体,包括了学生的姓名、语文、数学、英语和总分五个成员变量。然后定义了一个长度为n的Student类型的结构体数组students。
接着,使用scanf函数读入N个学生的信息,包括学生的姓名、语文成绩、数学成绩和英语成绩,并计算出每个学生的总分,存储到结构体数组students中。
然后,使用for循环遍历结构体数组students,找到总分最高的学生的下标maxIndex。
最后,输出总分最高的学生的姓名和各科成绩,即结构体数组students中下标为maxIndex的元素的姓名、语文成绩、数学成绩和英语成绩。
该程序可以找到总分最高的学生并输出其姓名和各科成绩。
阅读全文