• PAT基础级-钻石段位样卷1


    7-1 是不是太胖了 (5分)
     

    据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)

    输入格式:

    输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

    输出格式:

    在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

    输入样例:

    169
    
     

    输出样例:

    124.2


    #include <iostream>
    using namespace std;
    int main() {
        double N;
        scanf("%lf", &N);
        printf("%.1f", (N - 100) * 1.8);
        return 0;
    }
    7-2 装睡 (10分)
     

    你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们中间有可能在装睡的人,即至少一项指标不在正常范围内的人。

    输入格式:

    输入在第一行给出一个正整数N(≤)。随后N行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。

    输出格式:

    按照输入顺序检查每个人,如果其至少一项指标不在正常范围内,则输出其名字,每个名字占一行。

    输入样例:

    4
    Amy 15 70
    Tom 14 60
    Joe 18 50
    Zoe 21 71
    
     

    输出样例:

    Tom
    Zoe


    #include <iostream>
    using namespace std;
    int main() {
        int N, hu, mai;
        char name[100];
        scanf("%d", &N);
        while(N--) {
            scanf("%s%d%d", name, &hu, &mai);
            if(hu < 15 || hu > 20 || mai < 50 || mai > 70) 
                printf("%s
    ", name);
        }
        return 0;
    }
    7-3 到底是不是太胖了 (10分)
     

    据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

    输入格式:

    输入第一行给出一个正整数N≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。

    输出格式:

    为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!

    输入样例:

    3
    169 136
    150 81
    178 155
    
     

    输出样例:

    You are wan mei!
    You are tai shou le!
    You are tai pang le!

    #include <iostream>
    #include <cmath>
    using namespace std;
    int main() {
        int N, height, weight;
        scanf("%d", &N);
        while(N--) {
            scanf("%d%d", &height, &weight);
            double biao = (height - 100.0) * 1.8;
            if(fabs(biao - weight) < (0.1 * biao)) printf("You are wan mei!
    ");
            else if(biao < weight) printf("You are tai pang le!
    ");
            else printf("You are tai shou le!
    ");
        }
        return 0;
    }
    7-4 到底有多二 (15分)
     

    一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3,约为81.82%。本题就请你计算一个给定整数到底有多二。

    输入格式:

    输入第一行给出一个不超过50位的整数N

    输出格式:

    在一行中输出N犯二的程度,保留小数点后两位。

    输入样例:

    -13142223336
    
     

    输出样例:

    81.82%
    
     

    鸣谢安阳师范学院段晓云老师和软件工程五班李富龙同学补充测试数据!

    #include <iostream>
    using namespace std;
    int main() {
        string str;
        cin >> str;
        double fac = 1;
        if(str[0] == '-') {
            fac *= 1.5;
            str.erase(str.begin());
        }
        if((str[str.length() - 1] - '0') % 2 == 0) fac *= 2;
        int cnt = 0;
        for(int i = 0; i < str.length(); i++)
            if(str[i] == '2') cnt++;
        printf("%.2f%%", cnt * 100.0 * fac / str.length());
        return 0;
    }
    7-5 出生年 (15分)
     

    以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。

    输入格式:

    输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。

    输出格式:

    根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。

    输入样例1:

    1988 4
    
     

    输出样例1:

    25 2013
    
     

    输入样例2:

    1 2
    
     

    输出样例2:

    0 0001

    #include <iostream>
    using namespace std;
    int main() {
        int year, diff, cnt = 0;
        cin >> year >> diff;
        while(true) {
            int tmp[10] = {0}, cal = 0;
            tmp[year % 10]++;
            tmp[year / 10 % 10]++;
            tmp[year / 100 % 10]++;
            tmp[year / 1000]++;
            for(int i = 0; i < 10; i++) 
                if(tmp[i]) cal++;
            if(cal == diff) {
                printf("%d %04d", cnt, year);
                break;
            }
            cnt++;
            year++;
        }
        return 0;
    }
    7-6 C语言竞赛 (20分)
     

    C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:

    • 0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。
    • 1、排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!
    • 2、其他人将得到巧克力。

    给定比赛的最终排名以及一系列参赛者的 ID,你要给出这些参赛者应该获得的奖品。

    输入格式:

    输入第一行给出一个正整数 N(≤),是参赛者人数。随后 N 行给出最终排名,每行按排名顺序给出一位参赛者的 ID(4 位数字组成)。接下来给出一个正整数 K 以及 K 个需要查询的 ID。

    输出格式:

    对每个要查询的 ID,在一行中输出 ID: 奖品,其中奖品或者是 Mystery Award(神秘大奖)、或者是 Minion(小黄人)、或者是 Chocolate(巧克力)。如果所查 ID 根本不在排名里,打印 Are you kidding?(耍我呢?)。如果该 ID 已经查过了(即奖品已经领过了),打印 ID: Checked(不能多吃多占)。

    输入样例:

    6
    1111
    6666
    8888
    1234
    5555
    0001
    6
    8888
    0001
    1111
    2222
    8888
    2222
    
     

    输出样例:

    8888: Minion
    0001: Chocolate
    1111: Mystery Award
    2222: Are you kidding?
    8888: Checked
    2222: Are you kidding?

    #include <iostream>
    #include <vector>
    #include <map>
    using namespace std;
    bool is_prime(int N) {
        if(N == 2 || N == 3) return true;
        for(int i = 2; i * i <= N; i++)
            if(N % i == 0) return false;
        return true;
    }
    map<int, int> m;
    int main() {
        int N, K, tmp;
        cin >> N;
        vector<int> v(N + 1);
        for(int i = 1; i <= N; i++)
            cin >> v[i];
        cin >> K;
        while(K--) {
            cin >> tmp;
            int i = 1;
            while(i <= N && v[i] != tmp) i++;
            if(i == N + 1) printf("%04d: Are you kidding?
    ", tmp);
            else {
                if(m[tmp]) {
                    printf("%04d: Checked
    ", tmp);
                } else {
                    m[tmp] = 1;
                    if(i == 1) printf("%04d: Mystery Award
    ", tmp);
                    else if(is_prime(i)) printf("%04d: Minion
    ", tmp);
                    else printf("%04d: Chocolate
    ", tmp);
                }
            }
        }
        return 0;
    }
    7-7 查字典 (25分)
     

    给定单词列表,列出常用单词及该词在字典中的页码。给定任一单词,请输出它对应的页码。

    输入格式:

    输入的第一行给出列表中单词的总个数 N( 0 )。下面 N 行,每行列出一个单词以及对应的页码。随后在一行中给出待查的单词总数 M( 0 ),下面 M 行,每行列出一个待查的单词。每个单词是长度不超过 10 的、由小写英文字母组成的字符串。

    输出格式:

    对每一个待查单词,输出它所在的页码。每个单词的输出占一行。如果该单词不在列表中,则输出 Not Found

    输入样例:

    20
    principal 904
    approve 59
    brush 150
    chain 189
    converge 253
    convey 254
    explain 398
    fall 407
    luck 681
    rock 998
    super 1163
    able 3
    pity 865
    abroad 5
    victor 1291
    zero 1350
    cut 285
    door 340
    advise 20
    fake 407
    3
    victor
    cut
    you
    
     

    输出样例:

    1291
    285
    Not Found

    #include <iostream>
    #include <map>
    using namespace std;
    int main() {
        int N, tmp_i, M;
        cin >> N;
        string tmp;
        map<string, int> m;
        while(N--) {
            cin >> tmp >> tmp_i;
            m[tmp] = tmp_i;
        }
        cin >> M;
        while(M--) {
            cin >> tmp;
            if(m[tmp] != 0) cout << m[tmp] << endl;
            else cout << "Not Found" << endl;
        }
        return 0;
    }
  • 相关阅读:
    Cesium中监听MOUSE_MOVE事件获取经纬度和高度
    CentOS系统重命名
    docker安装步骤
    nginx发布vue 项目
    解决git 本地代码与远程仓库冲突问题
    js通过className删除元素
    bootstrap treeview基本运用
    自定义组件模拟v-model
    使用a标签下载**.txt文件, 而不是直接打开
    mongoose 开源http库
  • 原文地址:https://www.cnblogs.com/littlepage/p/12769622.html
Copyright © 2020-2023  润新知