用C语言写下面的题目:【问题描述】 现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的字符串,没有空格)、语文、数学、英语成绩(均为不超过 150 的自然数)。总分最高的学生就是最厉害的。请设计合理的结构体来存放输入数据,并对其进行操作,输出最厉害的学生各项信息(姓名、各科成绩)。如果有多个总分相同的学生,输出靠前的那位。 【输入形式】 第一行一个整数 N。 接下来 N 行,每行依次为学生姓名,语文成绩,数学成绩,英语成绩,以空格隔开。 【输出形式】 输出最优秀的一位学生,格式同输入。 【样例输入1】 3 senpai 114 51 4 lxl 114 10 23 fafa 51 42 60 【样例输出1】 senpai 114 51 4 【样例输入2】 3 zhang 100 100 100 liu 100 100 100 fafa 99 99 60 【样例输出2】 zhang 100 100 100
时间: 2024-03-24 16:37:04 浏览: 124
以下是用C语言编写的程序,可以实现输入N名同学的成绩信息并输出总分最高的学生的姓名和各项成绩:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 1000
typedef struct student {
char name[9];
int chinese;
int math;
int english;
int total;
} stu;
int main() {
stu students[MAX_N];
int n, i;
int max_index = 0; // 记录总分最高的学生在数组中的下标
// 读入学生信息
scanf("%d", &n);
for (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;
}
// 找出总分最高的学生
for (i = 1; i < n; i++) {
if (students[i].total > students[max_index].total) {
max_index = i;
}
}
// 输出总分最高的学生信息
printf("%s %d %d %d\n", students[max_index].name, students[max_index].chinese, students[max_index].math, students[max_index].english);
return 0;
}
```
程序中定义了一个结构体`stu`,包含学生的姓名、语文、数学、英语和总分。然后定义了一个存储学生信息的结构体数组`students`,大小为`MAX_N`。使用`scanf`函数读入学生信息,计算出学生的总分,并找出总分最高的学生在数组中的下标。最后使用`printf`函数输出总分最高的学生的姓名和各项成绩。
阅读全文