蓝桥杯专项复习——奖学金(结构体+sort(a,a+n,cmp))、航班时间(输入输出特殊格式)、错误票据(没有长度的数据读入)

目录

结构体:排序

[NOIP2007]奖学金

注意:结构体的赋值方式、给每个学生一个序号

代码: 

输入输出

P8665 [蓝桥杯 2018 省 A] 航班时间 

P8598 错误票据


结构体:排序

[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;//再按照语文成绩排 
    else
        return 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 错误票据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值