1.题目:
# 【深基7.例9】最厉害的学生
## 题目描述
现有 $N$ 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 $8$ 个字符的仅有英文小写字母的字符串)、语文、数学、英语成绩(均为不超过 $150$ 的自然数)。总分最高的学生就是最厉害的,请输出最厉害的学生各项信息(姓名、各科成绩)。如果有多个总分相同的学生,输出靠前的那位。
## 输入格式
第一行输入一个正整数 $N$,表示学生个数。
第二行开始,往下 $N$ 行,对于每一行首先先输入一个字符串表示学生姓名,再输入三个自然数表示语文、数学、英语的成绩。均用空格相隔。
## 输出格式
输出最厉害的学生。
## 样例 #1
### 样例输入 #1
```
3
senpai 114 51 4
lxl 114 10 23
fafa 51 42 60
```
### 样例输出 #1
```
senpai 114 51 4
```
## 提示
数据保证,$1 \leq N \leq 1000$,姓名为长度不超过 $8$ 的字符串,语文、数学、英语成绩均为不超过 $150$ 的自然数。
解析:
1.因为使用了不同的类型数据,所以应该声明一个结构体。
struct Student{
char name[20];
int chinese;
int math;
int english;
int sum;
};
2.在主函数中定义一个相应的变量。
struct Student student[200];
3.与之相对应的结构体的相关输入。(在引用结构体变量中,一定要注意变量名+(.)+所要引用的变量单元。)
for(i=0;i<n;i++){
scanf("%s",student[i].name);
scanf("%d",&student[i].chinese);
scanf("%d",&student[i].math);
scanf("%d",&student[i].english);
student[i].sum=student[i].chinese+student[i].math+student[i].english;
}
4.比较最大量。
int max=student[0].sum;
for(i=0;i<n;i++){
if(max<student[i].sum){
max=student[i].sum;
k=i;
}
}
5.完整代码。
#include<stdio.h>
struct Student{
char name[20];
int chinese;
int math;
int english;
int sum;
};
int main()
{
struct Student student[200];
int n;
scanf("%d",&n);
int i,k=0,t;
for(i=0;i<n;i++){
scanf("%s",student[i].name);
scanf("%d",&student[i].chinese);
scanf("%d",&student[i].math);
scanf("%d",&student[i].english);
student[i].sum=student[i].chinese+student[i].math+student[i].english;
}
int max=student[0].sum;
for(i=0;i<n;i++){
if(max<student[i].sum){
max=student[i].sum;
k=i;
}
}
printf("%s %d %d %d",student[k].name,student[k].chinese,student[k].math,student[k].english);
}