王道考研机试练习

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct student{
char name[100];
int age;
int grade;
};
/*
bool cmp(student a,student b)
{
    if(a.grade<b.grade) return true;
    if(a.grade==b.grade){
        if(a.name[0]<b.name[0]) return true;
        if(a.name[0]==b.name[0]&&a.age<b.age) return true;
    }
    return false;
}*/
bool cmp(student a,student b)
{
    if(a.grade!=b.grade) return a.grade<b.grade;//小->大
    int res=strcmp(a.name,b.name);
    if(res!=0) return res<0; //if a.name<b.name return true
    return a.age<b.age;//if a.age<b.age return true
}
int main()
{
    int n;
    scanf("%d",&n);
    student stu[n];
    for(int i=0;i<n;i++)
        scanf("%s %d %d",&stu[i].name,&stu[i].age,&stu[i].grade);
    sort(stu,stu+n,cmp);
    for(int i=0;i<n;i++)
        cout<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].grade<<endl;
    return 0;
}

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<math.h>
using namespace std;
bool judge(int y)
{
    if((y%4==0&&y%100!=0)||y%400==0)
        return true;
    return false;
}
int monthday(int y,int m)
{
    if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
        return 31;
    if(m==4||m==6||m==9||m==11)
        return 30;
    if(m==2&&judge(y)) return 29;
    else return 28;
}
int cal(int y,int m,int d)
{
    int res=0;
    for(int i=1;i<=m;i++)
        res+=monthday(y,i);
    res+=d;
    return res;
}
int main()
{
    int a,b;
    while(scanf("%d",&a)!=EOF)
    {
        scanf("%d",&b);
        int y1=a/10000,y2=b/10000;
        int m1=(a%10000)/100,m2=(b%10000)/100;
        int d1=a%100,d2=b%100;
        int r1=cal(y1,m1,d1),r2=cal(y2,m2,d2);
        int res=0;
        if(y1==y2) res=abs(r2-r1)+1;
        else if(y1>y2){
            for(int i=y2;i<y1;i++)
            {
                if(judge(i)) res+=366;
                else res+=365;
            }
            res+=r1;
            res=res-r2+1;
        }
        else{
            for(int i=y1;i<y2;i++)
            {
                if(judge(i)) res+=366;
                else res+=365;
            }
            res+=r2;
            res=res-r1+1;
        }
        cout<<res<<endl;
    }
    return 0;
}

在这里插入图片描述

#include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<queue>
using namespace std;
int main()
{
    int n;
    int a[1000];
    int x;
    queue<int> res;
    //方法1
    do{
       scanf("%d",&n);
       if(n==0) break;
       map<int,int> stu;
       for(int i=0;i<n;i++)
       {
           cin>>a[i];
           if(stu.count(a[i])==0)
              stu[a[i]]=1;
           else
            stu[a[i]]++;

       }
       scanf("%d",&x);
       res.push(stu[x]);
    }while(n!=0);
    /*方法2
    do
    {      
        scanf("%d",&n);
        if(n==0) break;
        int Hash[101]={0};
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
            Hash[a[i]]++;
        }
        cin>>x;
        res.push(Hash[x]);
    }while(n!=0);
    */
    while(!res.empty())
    {
        cout<<res.front()<<endl;
        res.pop();
    }
    return 0;
}
int main()
{
    int n;
    int a[1000];
    int x;
    queue<int> res;
    do
    {      
        scanf("%d",&n);
        if(n==0) break;
        int Hash[101]={0};
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
            Hash[a[i]]++;
        }
        cin>>x;
        res.push(Hash[x]);
    }while(n!=0);
    while(!res.empty())
    {
        cout<<res.front()<<endl;
        res.pop();
    }
    return 0;
}

在这里插入图片描述

#include<stdlib.h>
#include<stdio.h>
#include<iostream>
using namespace std;
#define x 500000;
int main()
{
    int n,m;
    int a[1000001]={0};
    int tmp;
    for(int i=0;i<n;i++)
    {
        cin>>tmp;
        a[tmp+x]++;
    }
    int flag=1000001;
    while(m>0)
    {
        while(a[flag]==0)
            flag--;
        cout<<flag-x<<" ";
        a[flag]--;
        m--;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值