【2020.09】青少年软件编程等级考试C/C++(一级)

考题一:输出整数

输入四个整数,把输入的第三、第四个整数输出

        时间限制:3000

        内存限制:65536

输入

        只有一行,四个整数,整数之间由一个空格分隔,整数是32位有符号位整数

输出

        只有一行,两个整数,即输入的第三、第四个整数,以一个空格分隔

样例输入

        12 34 56 789

样例输出

        56 789

#include <iostream>
using namespace std;

int main() {
    int nums[4];
    // 读取输入的四个整数
    for (int i = 0; i < 4; i++) {
        cin >> nums[i];
    }
    // 输出第三个和第四个整数
    cout << nums[2] << " " << nums[3] << endl;

    return 0;
}

解析:

  • 声明一个大小为4的整数数组nums

  • 使用for循环依次读取输入的四个整数,存入数组中。

  • 输出数组中的第三个和第四个整数,以空格分隔,末尾加上一个换行符\n。  

考题二:新冠疫情死亡率

2020年全世界爆发了新冠疫情,请根据某个国家报告的新冠确诊数和死亡数,计算新冠疫情在该国的死亡率。

        时间限制:10000

        内存限制:65536

输入

       输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数

输出

        输出仅一行,新冠死亡率,以百分数形式输出,精确到小数点后三位

样例输入

        10433 60

样例输出

        0.575%

提示

        输出%可以使用print("%%"); 

#include <iostream>
#include <iomanip> 
using namespace std;

int main() {
    int confirmed, deaths;
    // 读取输入的确诊数和死亡数
    cin >> confirmed >> deaths;
    // 计算死亡率
    double mortalityRate = (double) deaths / confirmed * 100;
    // 设置输出格式,保留三位小数,输出百分号
    cout << fixed << setprecision(3) << mortalityRate << "%" << endl;
    return 0;
}

解析:

  • 声明两个整数变量confirmeddeaths,用于存储输入的确诊数和死亡数。

  • 使用cin读取输入的确诊数和死亡数。

  • 计算死亡率,将死亡数除以确诊数,并乘以100。由于除法涉及到浮点数,需要将其中一个操作数转换为浮点数,这里将deaths转换为double类型。

  • 使用fixedsetprecision来设置输出格式,保留三位小数。

  • 使用cout输出死亡率,并添加百分号。

考题三:有一门课不及格的学生

给出一名学生的语文成绩和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)

        时间限制:10000

        内存限制:65536

输入

        输入一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩

输出

        若该生恰好有一门课不及格,输出1,否则输出0

样例输入

        50 80

样例输出

        1

#include <iostream>
using namespace std;

int main() {
    int chinese, math;

    // 读取输入的语文成绩和数学成绩
    cin >> chinese >> math;

    // 判断是否恰好有一门课不及格
    if ((chinese < 60 && math >= 60) || (chinese >= 60 && math < 60)) {
        cout << 1 << endl;
    } else {
        cout << 0 << endl;
    }

    return 0;
}

解析:

  • 声明两个整数变量chinesemath,用于存储输入的语文成绩和数学成绩。

  • 使用cin读取输入的语文成绩和数学成绩。

  • 使用条件语句判断是否恰好有一门课不及格。如果语文成绩小于60且数学成绩大于等于60,或者语文成绩大于等于60且数学成绩小于60,则表示恰好有一门课不及格。

  • 如果条件成立,输出1;否则,输出0。

考题四:整数的个数

给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数,写程序计算给定k个正整数中,1,5和10出现的次数。

        时间限制:10000

        内存限制:65536

输入

        输入有两行,第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。

输出

        输出有三行,第一行为1出现的次数,第二行为5出现的次数,第三行为10出现的次数

样例输入

        5

        1 5 8 10 5

样例输出

        1

        2

        1

#include <iostream>
using namespace std;

int main() {
    int k;
    int count1 = 0, count5 = 0, count10 = 0;

    // 读取输入的k和k个正整数
    cin >> k;

    for (int i = 0; i < k; i++) {
        int num;
        cin >> num;

        // 判断正整数出现的次数
        if (num == 1) {
            count1++;
        } else if (num == 5) {
            count5++;
        } else if (num == 10) {
            count10++;
        }
    }

    // 输出1, 5和10出现的次数
    cout << count1 << endl;
    cout << count5 << endl;
    cout << count10 << endl;

    return 0;
}

 解析:

  • 声明一个整数变量k,用于存储输入的正整数的个数。

  • 声明三个整数变量count1count5count10,分别用于记录1、5和10出现的次数,初始化为0。

  • 使用cin读取输入的k。

  • 使用for循环读取k个正整数,并在循环中判断正整数的值,并相应地增加对应的计数器。

  • 使用cout输出1、5和10出现的次数,并在每次输出后换行。

考题五:金币

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币...种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。

        时间限制:10000

        内存限制:65536

输入

        一个整数(范围1到10000),表示天数

输出

        骑士获得的金币数

样例输入

        6

样例输出

        14

#include <iostream>
using namespace std;

int main() {
    int days;

    // 读取输入的天数
    cin >> days;

    int coins = 0;
    int count = 1; // 记录每个工资周期的天数
    int salary = 1; // 工资周期的金币数

    for (int i = 1; i <= days; i++) {
        coins += salary;

        count--;
        if (count == 0) {
            salary++;
            count = salary;
        }
    }

    cout << coins << endl;

    return 0;
}

 解析:

  • 声明一个整数变量days,用于存储输入的天数。

  • 使用cin读取输入的天数。

  • 声明一个整数变量coins,用于记录骑士获得的金币数,初始化为0。

  • 声明两个整数变量countsalary,分别用于记录每个工资周期的天数和金币数,初始化为1。

  • 使用for循环遍历每一天,从第一天开始计算骑士获得的金币数。

  • 在循环中,累加金币数,并将count减1。当count等于0时,表示一个工资周期结束,需要增加salary并将count重新赋值为salary

  • 使用cout输出骑士获得的金币数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值