2020年09月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

在这里插入图片描述

C/C++编程(1~8级)全部真题・点这里

第1题:输出整数

输入四个整数,把输入的第三、第四个整数输出。
时间限制:3000
内存限制:65536
输入
只有一行,共四个整数,整数之间由一个空格分隔。整数是32位有符号整数。
输出
只有一行,二个整数,即输入的第三、第四个整数,以一个空格分开。
样例输入
12 34 56 789
样例输出
56 789

你可以使用C语言的scanf函数来读取输入的四个整数,并使用printf函数输出第三个和第四个整数。下面是一个示例代码:

#include <stdio.h>

int main() {
    
    
    int num1, num2, num3, num4;
    scanf("%d %d %d %d", &num1, &num2, &num3, &num4);
    printf("%d %d\n", num3, num4);
    return 0;
}

在主函数中,我们声明了四个整数变量num1、num2、num3和num4,然后使用scanf函数读取输入的四个整数。输入的整数通过"%d"格式化字符串进行读取,并使用"&"运算符获取变量的地址。

接下来,我们使用printf函数输出num3和num4,使用"%d"格式化字符串来打印整数,并使用空格分隔。

最后,我们使用return语句结束程序。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入四个整数,即可得到输出结果。

第2题:新冠疫情死亡率

2020年全世界爆发了新冠疫情,请根据某个国家报告的新冠确诊数和死亡数,计算新冠疫情在该国的死亡率。
时间限制:10000
内存限制:65536
输入
输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。
输出
输出仅一行,新冠死亡率,以百分数形式输出,精确到小数点后3位。
样例输入
10433 60
样例输出
0.575%
提示
输出%可以使用printf(“%%”);

要计算新冠疫情的死亡率,可以使用以下公式:

死亡率 = (死亡数 / 确诊数) * 100

以下是一个示例代码:

#include <stdio.h>

int main() {
    
    
    int confirmed, deaths;
    scanf("%d %d", &confirmed, &deaths);

    double mortalityRate = (double)deaths / confirmed * 100;

    printf("%.3f%%\n", mortalityRate);

    return 0;
}

在主函数中,我们声明了两个整数变量confirmed和deaths,使用scanf函数读取输入的确诊数和死亡数。

接下来,我们使用double数据类型来计算死亡率。通过将deaths转换为double类型,我们可以进行浮点数除法,得到准确的死亡率。

最后,我们使用printf函数打印死亡率,并使用"%.3f%%“格式化字符串来输出百分数形式的结果,保留小数点后三位,并使用”%%"来输出百分号。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入确诊数和死亡数,即可得到新冠疫情的死亡率输出结果。

第3题:有一门课不及格的学生

给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。
时间限制:10000
内存限制:65536
输入
一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。
输出
若该生恰好有一门课不及格,输出1;否则输出0。
样例输入
50 80
样例输出
1

你可以使用C语言编写一个简单的程序来判断学生是否恰好有一门课不及格。以下是示例代码:

#include <stdio.h>

int main() {
    
    
    int chinese, math;
    scanf("%d %d", &chinese, &math);

    int isOneFailing = (chinese < 60 && math >= 60) || (chinese >= 60 && math < 60);

    printf("%d\n", isOneFailing);

    return 0;
}

在主函数中,我们声明了两个整数变量chinese和math,使用scanf函数读取输入的语文成绩和数学成绩。

接下来,我们使用逻辑运算符和条件语句来判断学生是否恰好有一门课不及格。如果语文成绩小于60并且数学成绩大于等于60,或者语文成绩大于等于60并且数学成绩小于60,那么学生恰好有一门课不及格,将isOneFailing设为1,否则设为0。

最后,我们使用printf函数打印isOneFailing的值。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入语文成绩和数学成绩,即可得到判断结果输出。如果输出为1,表示学生恰好有一门课不及格;如果输出为0,表示学生没有课程不及格。

第4题:整数的个数

给定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

你可以使用C语言编写一个程序来计算给定的k个正整数中1、5和10出现的次数。以下是示例代码:

#include <stdio.h>

int main() {
    
    
    int k, num, count_1 = 0, count_5 = 0, count_10 = 0;
    scanf("%d", &k);

    for (int i = 0; i < k; i++) {
    
    
        scanf("%d", &num);
        if (num == 1) {
    
    
            count_1++;
        } else if (num == 5) {
    
    
            count_5++;
        } else if (num == 10) {
    
    
            count_10++;
        }
    }

    printf("%d\n", count_1);
    printf("%d\n", count_5);
    printf("%d\n", count_10);

    return 0;
}

在主函数中,我们声明了整数变量k、num以及三个计数变量count_1、count_5和count_10。使用scanf函数读取输入的k值。

接下来,我们使用for循环遍历k个正整数,每次使用scanf函数读取一个数并将其赋值给num。然后,我们使用条件语句判断num的值,如果等于1,则count_1加1;如果等于5,则count_5加1;如果等于10,则count_10加1。

最后,我们使用printf函数分别打印count_1、count_5和count_10的值。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,首先输入k值,然后输入k个正整数,即可得到1、5和10出现的次数输出结果。

第5题:金币

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

你可以使用C语言编写一个程序来计算给定天数内骑士获得的金币数。以下是示例代码:

#include <stdio.h>

int main() {
    
    
    int days, coins = 0, count = 1;
    scanf("%d", &days);

    for (int i = 1; i <= days; i++) {
    
    
        coins += count;
        if (i >= count * (count + 1) / 2) {
    
    
            count++;
        }
    }

    printf("%d\n", coins);

    return 0;
}

在主函数中,我们声明了整数变量days表示给定的天数,coins表示骑士获得的金币数,count表示当前工资发放模式的天数。使用scanf函数读取输入的days值。

接下来,我们使用for循环遍历从第一天到给定的天数。在每一天,将count个金币加到coins中。然后,我们使用条件语句判断是否需要切换到下一个工资发放模式。如果当前天数大于等于count * (count + 1) / 2,表示需要切换到下一个模式,将count加1。

最后,我们使用printf函数打印骑士获得的金币数。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入给定的天数,即可得到骑士获得的金币数输出结果。

猜你喜欢

转载自blog.csdn.net/gozhuyinglong/article/details/132700582
今日推荐