结构体题目解析

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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值