蓝桥杯专项复习——结构体、输入输出
目录
结构体:排序
输入输出
结构体:排序
[NOIP2007]奖学金
#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;const int N=310;
int n;struct Student
{int chinese,math,eng,sum;int idx;
}Stu[N];//定义一个结构体数组bool cmp(Student a,Student b)
{if(a.sum!=b.sum)return a.sum>b.sum;//先按照总分大的排 else if(a.chinese!=b.chinese)return a.chinese>b.chinese;//再按照语文成绩排 elsereturn a.idx<b.idx;//最后根据编号
}
int main()
{cin>>n;for(int i=1;i<=n;i++){int x,y,z;cin>>x>>y>>z;Stu[i]={x,y,z,x+y+z,i};}sort(Stu+1,Stu+n+1,cmp);//使用自定义排序 for(int i=1;i<=5;i++)cout<<Stu[i].idx<<' '<<Stu[i].sum<<endl;return 0;}
输入输出
根据相应的格式使用scanf、printf进行输入、输出
特别格式读入、输出:
P8665 [蓝桥杯 2018 省 A] 航班时间
读入方式:
读入所有的数:while(cin>>a[++cnt])
读入所有(包括空格):string s; getline(cin,s);
将被空格隔开的数读入:
int cnt=0; string s; getline(cin,s);
stringstream line(s); while(line>>a[++cnt];
被空格隔开数据读入例题:
P8598 错误票据