洛谷 P5740 题解

题意:给出一个学生的语文数学英语成绩, 求总分最大且最靠前的人。

其实这个就是结构体的运用。

补充知识

没学结构体先看这里,或者直接看题解2。

关键词:struct。

介绍:

结构体其实可以理解为新建一个数据类型。

你想在里面放什么变量都可以,甚至可以结构体套结构体。

格式:

struct /*<名称>*/{

//  <数据类型> <变量名>
//  ......(和上一行一样的)

}/*[结构体类型变量]*/;
//--调用--
/*[结构体类型变量].[变量名]*/

}

结构体的知识既然学了,那么我们就来看看代码。

代码(1)

/****************************************
作者:
版权:
日期:
*****************************************/
#include
using namespace std;
struct stu{ //定义结构体stu
	string name;
	int Ch;
	int En;
	int Ma;
	int all;
} a[1001]; 
int n,maxn,maxi;
int main(){
	cin>>n;
	for(int i=0;i<n;i++){//输入
		cin>>a[i].name>>a[i].Ch>>a[i].Ma>>a[i].En;
		a[i].all=a[i].Ch+a[i].En+a[i].Ma;
		if(i==0){//作取最大值
			maxn=a[i].all;
			maxi=i;
		}
		if(maxn<a[i].all){
			maxi=i;
			maxn=a[i].all;
		}
		//cout<<"maxi : "<
	}
	cout<<a[maxi].name<<" "<<a[maxi].Ch<<" "<<a[maxi].Ma<<" "<<a[maxi].En<<endl;
	return 0;
}

那么第二种方法又是什么呢?

我们只需要弄4个数组即可。

代码(2)

/****************************************
作者:
版权:
日期:
*****************************************/
#include
using namespace std;
string n[1001];
int En[1001],Cn[1001],Ma[1001],a,maxn=-1,maxi;
int main(){
	cin>>a;
	for(int i=0;i<a;i++){
		cin>>n[i]>>Cn[i]>>Ma[i]>>En[i];
		if(Cn[i]+Ma[i]+En[i]>maxn){
			maxn=Cn[i]+Ma[i]+En[i];
			maxi=i;
		}
	}
	cout<<n[maxi]<<" "<<Cn[maxi]<<" "<<Ma[maxi]<<" "<<En[maxi]<<endl;
	return 0;
}

最后

亲切提醒您:请勿抄题解

你可能感兴趣的:(题解,算法,windows,c语言,c++,青少年编程,笔记)