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

news/2024/7/20 19:20:00 标签: c语言, c++, 算法, 电子学会, 等级考试

在这里插入图片描述

第1题:倒序输出

依次输入4个整数a、b、c、d,将他们倒序输出,即依次输出d、c、b、a这4个数。
时间限制:1000
内存限制:65536
输入
一行4个整数a、b、c、d,以空格分隔。 0 < a,b,c,d < 108
输出
一行4个整数d、c、b、a,整数之间以一个空格分隔。
样例输入
1 2 3 4
样例输出
4 3 2 1

下面是一个使用C语言编写的倒序输出的程序的示例代码:

#include <stdio.h>

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

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

    return 0;
}

在上述代码中,我们使用scanf函数读取输入的四个整数abcd,并使用%d作为格式化字符串。

然后,我们使用printf函数按倒序输出这四个整数。我们通过在格式化字符串中依次写入变量dcba,并使用空格进行分隔,最后加上换行符\n

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

第2题:平方差计算

给定的两个整数a, b, 他们的平方差结果为a2-b2 ,可以化简为 (a + b)(a-b)。例如5和4的平方差为52-42=(5+4)(5-4)=9。现给定两个整数,求他们的平方差。
时间限制:1000
内存限制:65536
输入
一行两个整数a、b,以空格分隔。 0 < b < a < 104
输出
输出a和b的平方差
样例输入
5 4
样例输出
9

下面是一个使用C语言编写的计算平方差的程序的示例代码:

#include <stdio.h>

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

    int square_diff = (a + b) * (a - b);

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

    return 0;
}

在上述代码中,我们使用scanf函数读取输入的两个整数ab

然后,我们定义一个变量square_diff来保存平方差的结果,并计算(a + b) * (a - b)的值,并将其赋给square_diff

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

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

第3题:最小的数

依次输入3个整数a、b、c,将a、b、c中的最小值输出。
时间限制:1000
内存限制:65536
输入
一行3个整数a、b、c,以空格分隔。 0 < a,b,c < 108
输出
1个整数,即3个整数的最小值。
样例输入
2 3 2
样例输出
2

下面是一个使用C语言编写的找到三个整数中最小值的程序的示例代码:

#include <stdio.h>

int findMin(int a, int b, int c) {
    int min = a;

    if (b < min) {
        min = b;
    }

    if (c < min) {
        min = c;
    }

    return min;
}

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

    int min = findMin(a, b, c);

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

    return 0;
}

在上述代码中,我们首先定义了一个辅助函数findMin,它接受三个整数参数abc,并返回这三个数中的最小值。在函数内部,我们使用一个变量min来保存当前的最小值,初始值为a。然后,我们通过一系列的条件判断语句来更新min的值,将其更新为bc,如果它们的值更小。最后,我们返回min作为函数的结果。

main函数中,我们使用scanf函数读取输入的三个整数abc

然后,我们调用findMin函数,传入abc作为参数,以获得最小值,并将其赋给变量min

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

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

第4题:计算成绩优秀的人数

现有一个班一门课程考试的分数,请统计其中成绩为优秀的人数。成绩为优秀的要求是分数大于等于85。
时间限制:1000
内存限制:65536
输入
第一行1个整数n,表示分数的个数。(0 < n ≤ 100, ) 第二行n个正整数,表示每一个分数,每个分数小于等于100。
输出
输出一个整数,表示成绩为优秀的人数。
样例输入
10
85 70 99 90 78 55 100 62 88 84
样例输出
5

下面是一个使用C语言编写的统计成绩优秀的人数的程序的示例代码:

#include <stdio.h>

int countExcellent(int scores[], int n) {
    int count = 0;

    for (int i = 0; i < n; i++) {
        if (scores[i] >= 85) {
            count++;
        }
    }

    return count;
}

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

    int scores[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &scores[i]);
    }

    int excellentCount = countExcellent(scores, n);

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

    return 0;
}

在上述代码中,我们首先定义了一个辅助函数countExcellent,它接受一个整数数组scores和数组的长度n作为参数,并返回成绩优秀的人数。在函数内部,我们定义一个变量count来保存成绩优秀的人数,初始值为0。然后,我们使用一个循环遍历数组中的每个分数,如果分数大于等于85,则将count加1。最后,我们返回count作为函数的结果。

main函数中,我们首先使用scanf函数读取输入的分数的个数n

然后,我们定义一个大小为n的整数数组scores来保存每个分数。

接下来,我们使用一个循环读取输入的每个分数,并将其存储到数组scores中。

然后,我们调用countExcellent函数,传入数组scoresn作为参数,以获得成绩优秀的人数,并将其赋给变量excellentCount

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

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

第5题:开关灯

假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。
第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。
请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。
时间限制:1000
内存限制:65536
输入
输入正整数N和M,以单个空格隔开。
输出
顺次输出关闭的灯的编号,其间用逗号间隔。
样例输入
10 10
样例输出
1,4,9

下面是一个使用C语言编写的开关灯问题的程序的示例代码:

#include <stdio.h>
#include <stdbool.h>

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

    bool lights[N + 1];  // 使用布尔数组表示灯的状态,下标从1到N

    // 初始化灯的状态,全部为开启状态
    for (int i = 1; i <= N; i++) {
        lights[i] = true;
    }

    // 模拟M个人的操作
    for (int i = 1; i <= M; i++) {
        for (int j = i; j <= N; j += i) {
            lights[j] = !lights[j];  // 改变灯的状态
        }
    }

    // 输出关闭的灯的编号
    bool first = true;  // 用于控制逗号的输出
    for (int i = 1; i <= N; i++) {
        if (!lights[i]) {
            if (!first) {
                printf(",");
            }
            printf("%d", i);
            first = false;
        }
    }
    printf("\n");

    return 0;
}

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

然后,我们定义一个布尔数组lights来表示灯的状态,数组的下标从1到N,初始时全部为开启状态。

接下来,我们使用两个嵌套的循环模拟M个人的操作。外层循环控制每个人的编号,内层循环根据当前人的编号,改变对应倍数的灯的状态,即将开启的灯关闭,将关闭的灯开启。

完成所有操作后,我们使用一个循环遍历灯的状态数组,输出关闭的灯的编号。使用变量first来控制逗号的输出,确保正确的格式。

最后,我们使用printf函数输出换行符。

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


http://www.niftyadmin.cn/n/4933809.html

相关文章

机器学习深度学习——seq2seq实现机器翻译(数据集处理)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——从编码器-解码器架构到seq2seq&#xff08;机器翻译&#xff09; &#x1f4da;订阅专栏&#xff1a;机…

tomcat设置PermSize

最近tomcat老是报错,查看了日志出现PermGen 内存不够用,重启tomcat后查询使用情况 通过启动参数发现没有设置 PermGen,继续通过jmap查看 jmap -heap 21179 发现99%已使用,而且默认是30.5M,太小了,这里设置成256M 1. 创建setenv.sh文件 在/usr/local/tomcat/bin目录下创建一个…

Object.assign详解

一、Object.assign是什么&#xff1f; Object.assign( )方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 二、用法 Object.assign(target, ...sources) 参数&#xff1a;target ——>目标对象 source ——>源对象 返回值&#xff1a;…

第一百二十五天学习记录:C++提高:STL-deque容器(下)(黑马教学视频)

deque插入和删除 功能描述&#xff1a; 向deque容器中插入和删除数据 函数原型&#xff1a; 两端插入操作&#xff1a; push_back(elem); //在容器尾部添加一个数据 push_front(elem); //在容器头部插入一个数据 pop_back(); //删除容器最后一个数据 pop_front(); //删除容器…

HashMap原理学习

数据结构&#xff1a; 1.8及以后为 数组链表红黑树 计算hash&#xff1a; 参考&#xff1a;https://blog.csdn.net/EnseHeiKe/article/details/115207321 HashMap中的 hash() 算法&#xff1a; static final int hash(Object key) {int h;return (key null) ? 0 : (h k…

yo!这里是STL::list类简单模拟实现

目录 前言 重要接口实现 框架 默认成员函数 迭代器&#xff08;重点&#xff09; 1.引言 2.list迭代器类实现 3.list类中调用实现 增删查改 后记 前言 我们知道&#xff0c;stl中的vector对应数据结构中的顺序表&#xff0c;string类对应字符串&#xff0c;而今天要…

.NET实现解析字符串表达式

一、引子功能需求 我们创建了一个 School 对象&#xff0c;其中包含了教师列表和学生列表。现在&#xff0c;我们需要计算教师平均年龄和学生平均年龄。 //创建对象 School school new School() {Name "小菜学园",Teachers new List<Teacher>(){new Teach…

docker 安装elasticsearch、kibana

下载es镜像 docker pull elasticsearch 启动es容器 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d elasticsearch 验证es界面访问 ​​​​​http://节点ip:9200/ ​…