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

2021年09月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试_第1张图片

第1题:数字判断

输入一个字符,如何输入的字符是数字,输出yes,否则输出no
输入 一个字符
输出 如何输入的字符是数字,输出yes,否则输出no 样例1输入
样例1输入
5
样例1输出
yes
样例2输入
A
样例2输出
no

下面是一个使用C语言编写的数字判断程序的示例代码,根据输入的字符判断是否为数字,并输出相应的结果:

#include 

int main() {
    char ch;
    scanf("%c", &ch);

    if (ch >= '0' && ch <= '9') {
        printf("yes\n");
    } else {
        printf("no\n");
    }

    return 0;
}

在上述代码中,我们首先使用scanf函数读取输入的字符ch

然后,我们使用if语句判断ch是否在数字字符’0’和’9’之间。如果是数字字符,则输出"yes";否则,输出"no"。

最后,我们使用return 0结束程序的执行。

你可以根据需要使用上述示例代码,并根据题目要求进行适当的修改。记得在编译和运行代码之前,确保你的编译环境已经配置好,并且包含了必要的头文件。

第2题:满足条件的数的累加

现有n个整数,将其中个位数为k的数进行累加求和。
输入 第一行2个整数n、k,以空格隔开。(0 输出 输出满足题目要求的累加和。
样例输入
10 7
2 5 7 17 11 18 4 27 1 7
样例输出
58

下面是一个使用C语言编写的满足条件的数的累加程序的示例代码,根据给定的整数数量n和个位数k,计算满足条件的数的累加和:

#include 

int main() {
    int n, k;
    scanf("%d %d", &n, &k);

    int sum = 0;
    for (int i = 0; i < n; i++) {
        int num;
        scanf("%d", &num);

        if (num % 10 == k) {
            sum += num;
        }
    }

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

    return 0;
}

在上述代码中,我们首先使用scanf函数读取输入的整数数量n和个位数k。

然后,我们定义一个变量sum用于存储满足条件的数的累加和,并初始化为0。

接下来,我们使用一个循环从0到n-1遍历每个整数。在循环中,我们使用scanf函数读取输入的每个整数,并使用条件语句if判断该整数的个位数是否为k。如果是,则将该整数累加到变量sum中。

最后,我们使用printf函数输出变量sum的值。

你可以根据需要使用上述示例代码,并根据题目要求进行适当的修改。记得在编译和运行代码之前,确保你的编译环境已经配置好,并且包含了必要的头文件。

第3题:交换输出

输入两个整数a,b,将它们交换输出
输入 一行两个整数a、b,以空格分割。0 输出 一行两个整数b、a,以空格分割。
样例输入
123 12345654321
样例输出
12345654321 123

下面是一个使用C语言编写的交换输出程序的示例代码,根据输入的两个整数a和b,将它们交换输出:

#include 

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    int temp = a;
    a = b;
    b = temp;

    printf("%d %d\n", b, a);

    return 0;
}

在上述代码中,我们首先使用scanf函数读取输入的两个整数a和b。

然后,我们使用一个临时变量temp来保存a的值。接着,我们将a赋值为b,将b赋值为temp,完成a和b的交换。

最后,我们使用printf函数输出交换后的b和a的值,按照要求以空格分隔。

你可以根据需要使用上述示例代码,并根据题目要求进行适当的修改。记得在编译和运行代码之前,确保你的编译环境已经配置好,并且包含了必要的头文件。

第4题:计算乘积

给定两个数a,b,计算它们的乘积
输入 一行两个整数a,b,以空格隔开。0 输出 一个整数,表示a,b的乘积。
样例输入
123456 123456
样例输出
15241383936

下面是一个使用C语言编写的计算乘积程序的示例代码,根据给定的两个数a和b,计算它们的乘积:

#include 

int main() {
    long long a, b;
    scanf("%lld %lld", &a, &b);

    long long product = a * b;

    printf("%lld\n", product);

    return 0;
}

在上述代码中,我们首先使用scanf函数读取输入的两个整数a和b。由于输入的数范围较大,我们使用long long类型来保存这两个数。

然后,我们定义一个变量product用于存储a和b的乘积。

接下来,我们将a和b相乘,并将结果赋值给变量product

最后,我们使用printf函数输出变量product的值。

你可以根据需要使用上述示例代码,并根据题目要求进行适当的修改。记得在编译和运行代码之前,确保你的编译环境已经配置好,并且包含了必要的头文件。

第5题:比n小的最大质数

对于给定的n,求比n小的质数中最大的一个
质数是指大于1的自然数,除了1和它自身外,不能被其他自然数整除的数。
输入
一个整数n(2 输出
一个整数,即题目要求的解。
样例输入
100
样例输出
97

下面是一个使用C语言编写的求比n小的最大质数的程序的示例代码:

#include 
#include 

bool isPrime(int num) {
    if (num <= 1) {
        return false;
    }

    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return false;
        }
    }

    return true;
}

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

    int maxPrime = 0;
    for (int i = n - 1; i >= 2; i--) {
        if (isPrime(i)) {
            maxPrime = i;
            break;
        }
    }

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

    return 0;
}

在上述代码中,我们首先定义了一个辅助函数isPrime来判断一个数是否为质数。该函数接受一个整数num作为参数,如果num是质数则返回true,否则返回false

然后,在主函数中,我们使用scanf函数读取输入的整数n

接下来,我们定义一个变量maxPrime,用于保存比n小的最大质数,初始值为0。

然后,我们使用一个从n-1递减的循环,从n-1开始向下找到第一个质数,将其赋值给maxPrime,并使用break语句跳出循环。

在循环中,对于每个待判断的数i,我们调用isPrime函数判断其是否为质数。如果是质数,则将其赋值给maxPrime并跳出循环。

最后,我们使用printf函数输出变量maxPrime的值。

你可以根据需要使用上述示例代码,并根据题目要求进行适当的修改。记得在编译和运行代码之前,确保你的编译环境已经配置好,并且包含了必要的头文件。

你可能感兴趣的:(C/C++等级考试历届真题解析,c语言,c++,等级考试,电子学会)