一、关于结构体
1、什么是结构体
在我们写程序的时候,可能会遇到需要大量存储批量数据,比如存储某几位考生的信息,可能会考虑数组,但是如果用数组会有些麻烦,所以出现了结构体。
2、结构体的讲解
这里需要用到一道题,是洛谷的P5740 【深基7.例9】最厉害的学生:
首先,我们需要一个struct,它是用来存储名字,语数英成绩的:
struct Stu{
string s;
int y,yy,sh;
}a,ans;
struct类型的a和ans是用来比较的,y是语文成绩,sh是数学成绩,yy是英语成绩
在输入的时候,我们要用点来调用,就像这样 :
cin>>a.s>>a.y>>a.sh>>a.yy;
a.s就是名字,a.y就是语文成绩,a.sh就是数学成绩,a.yy就是英语成绩。
然后我们要进行比较:
if(a.sh+a.yy+a.y>ans.sh+ans.y+ans.yy) ans=a;
最后输出ans的成绩和姓名:
cout<<ans.s<<ans.y<<ans.sh<<ans.yy;
接下来看一下完整代码:
#include<iostream>
using namespace std;
struct Stu{
string s;
int y,yy,sh;
}a,ans;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a.s>>a.y>>a.sh>>a.yy;
if(a.sh+a.yy+a.y>ans.sh+ans.y+ans.yy) ans=a;
}
cout<<ans.s<<ans.y<<ans.sh<<ans.yy;
return 0;
}
二、例题展示
本题为洛谷P5741 【深基7.例10】旗鼓相当的对手 - 加强版:
我们直接上代码:
#include<bits/stdc++.h>
using namespace std;
struct student{
char s[20];
int y,sh,yy,sum;
}a[1000];
int main(){
int n;
cin>>n;
for (int i=0;i<n;i++) {
cin>>a[i].s>>a[i].y>>a[i].sh>>a[i].yy;
a[i].sum=a[i].y+a[i].sh+a[i].yy;
}
for (int i=0;i<n-1;i++) {
for (int j=i+1;j<n;j++) {
if (abs(a[i].sum-a[j].sum)<=10){
if (abs(a[i].y-a[j].y)<=5&&abs(a[i].sh-a[j].sh)<=5&&abs(a[i].yy-a[j].yy)<=5){
printf("%s %s\n",a[i].s,a[j].s);
}
}
}
}
return 0;
}
如果有帮助就点关注吧!