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

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

第1题:数的输入和输出

输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。
时间限制:1000
内存限制:65536
输入
一行两个数,分别为整数N(不超过整型范围),双精度浮点数F,以一个空格分开。
输出
一行两个数,分别为保留2位小数输出的F,以及整数N,以一个空格分开。
样例输入
100 123.456789
样例输出
123.46 100

下面是一个使用C语言编写的数的输入和输出程序的示例代码,根据输入的整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数:

#include 

int main() {
    int N;
    double F;
    scanf("%d %lf", &N, &F);

    printf("%.2lf %d\n", F, N);

    return 0;
}

在上述代码中,我们使用scanf函数读取输入的整数N和双精度浮点数F。然后,我们使用printf函数按照要求输出保留2位小数的浮点数和整数。

printf函数中,我们使用格式化字符串"%.2lf"来保留浮点数F的小数点后2位,并使用格式化字符串"%d"输出整数N

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

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

第2题:(a/b)*c的值

给定整数a、b、c,计算(a / b)*c的值,这里的除法为实数除法。
时间限制:1000
内存限制:65536
输入
一行,三个整数a、b、c,整数间以空格分隔。(1 ≤ a,b,c ≤ 1000)
输出
将计算结果保留6位小数输出。
样例输入
1 3 3
样例输出
1.000000

下面是一个使用C语言编写的计算表达式(a / b) * c的值的示例代码,根据给定的整数a、b、c计算结果,并将结果保留6位小数输出:

#include 

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

    double result = (double)a / b * c;
    printf("%.6lf\n", result);

    return 0;
}

在上述代码中,我们首先使用scanf函数读取输入的整数a、b、c。然后,我们使用(double)a / b * c表达式进行实数除法和乘法的计算,并将结果保存在result变量中。

最后,我们使用printf函数按照题目要求输出结果,使用格式化字符串"%.6lf"来保留结果的小数点后6位。

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

第3题:大写字母的判断

输入一个字符,判断是否是英文大写字母,即是否是A-Z中的一个。
时间限制:1000
内存限制:65536
输入
一个字符。
输出
如果是英文大写字母,则输出YES,否者输出NO。
样例输入
K
样例输出
YES

下面是一个使用C语言编写的判断输入字符是否为英文大写字母的示例代码:

#include 

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

    if (ch >= 'A' && ch <= 'Z') {
        printf("YES\n");
    } else {
        printf("NO\n");
    }

    return 0;
}

在上述代码中,我们使用scanf函数读取输入的字符ch。然后,我们使用if语句判断ch是否在大写字母’A’和’Z’之间。

如果ch是一个大写字母,则输出"YES";否则,输出"NO"。

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

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

第4题:特殊求和

如果一个数能够被7整除或者十进制表示中含有数字7,那么我们称这个数为幻数,比如17,21,73是幻数,而6,59不是。
对于给定的N,求出1N中所有幻数的和。
时间限制:1000
内存限制:65536
输入
一个整数N(1 < N < 10000)。
输出
一个整数,表示1N中所有幻数的和。
样例输入
14
样例输出
21

下面是一个使用C语言编写的特殊求和程序的示例代码,根据给定的整数N,计算1~N中所有幻数的和:

#include 

int isMagicNumber(int num) {
    if (num % 7 == 0) {
        return 1;
    }

    while (num > 0) {
        int digit = num % 10;
        if (digit == 7) {
            return 1;
        }
        num /= 10;
    }

    return 0;
}

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

    int sum = 0;
    for (int i = 1; i <= N; i++) {
        if (isMagicNumber(i)) {
            sum += i;
        }
    }

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

    return 0;
}

在上述代码中,我们首先定义一个函数isMagicNumber来判断一个数是否为幻数。函数中,我们首先检查该数能否被7整除,如果可以,则返回1表示是幻数。

然后,我们使用循环逐位判断该数的十进制表示中是否含有数字7。如果有,我们返回1表示是幻数。如果循环结束后仍然没有返回,则返回0表示不是幻数。

main函数中,我们首先使用scanf函数读取输入的整数N。

然后,我们使用循环从1到N遍历每个数,对于每个数,我们调用isMagicNumber函数判断是否为幻数。如果是幻数,则将该数累加到变量sum中。

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

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

第5题:硬币翻转

假设有N个硬币(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于正面向上的状态;有M个人(M为不大于N的正整数)也从1到M依次编号。
第一个人(1号)将硬币全部翻转一次,第二个人(2号)将编号为2的倍数的硬币翻转一次,第三个人(3号)将编号为3的倍数的硬币翻转一次。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的硬币翻转一次。
请问:当第M个人操作之后,哪些硬币是正面向上的,按从小到大输出其编号,以空格分开。
时间限制:10000
内存限制:65536
输入
输入正整数N和M,以单个空格隔开。
输出
顺次输出正面向上的硬币的编号,其间用空格间隔。
样例输入
10 10
样例输出
2 3 5 6 7 8 10

下面是一个使用C语言编写的硬币翻转程序的示例代码,根据给定的硬币数量N和人数M,计算第M个人操作之后正面向上的硬币的编号并按从小到大输出:

#include 

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

    int coins[N + 1]; // 用于表示硬币状态的数组,初始全部为正面朝上(0表示正面朝上)
    for (int i = 0; i <= N; i++) {
        coins[i] = 0;
    }

    for (int i = 1; i <= M; i++) {
        for (int j = i; j <= N; j += i) {
            coins[j] = 1 - coins[j]; // 硬币翻转
        }
    }

    for (int i = 1; i <= N; i++) {
        if (coins[i] == 0) {
            printf("%d ", i);
        }
    }
    printf("\n");

    return 0;
}

在上述代码中,我们首先使用scanf函数读取输入的硬币数量N和人数M。

然后,我们定义一个大小为N+1的数组coins,用于表示硬币的状态,其中0表示正面朝上,1表示反面朝上。我们将数组初始化为全部为正面朝上。

接下来,我们使用两层循环。外层循环从1到M遍历每个人的编号,内层循环从当前人的编号开始,以当前人的编号为步长,将对应编号的硬币进行翻转操作。

在内层循环中,我们使用coins[j] = 1 - coins[j];语句来进行硬币翻转操作。

最后,我们遍历数组coins,如果硬币正面朝上(即coins[i]为0),则输出对应的硬币编号。

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

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