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

news2024/12/23 1:53:48

在这里插入图片描述

第1题:数字放大

给定一个整数序列以及放大倍数x,将序列中每个整数放大x倍后输出。
时间限制:1000
内存限制:65536
输入
包含三行: 第一行为N,表示整数序列的长度(N ≤ 100); 第二行为N个整数(不超过整型范围),整数之间以一个空格分开; 第三行包含一个整数(不超过整型范围),为指定的整数x。
输出
N个整数,为原序列放大之后的序列,整数之间以一个空格分开。
样例输入
3
1 5 7
2
样例输出
2 10 14
提示
注意答案的数据范围

以下是使用C语言编写的解决方案,用于将给定整数序列中的每个整数放大x倍后输出:

#include <stdio.h>

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

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

    int x;
    scanf("%d", &x);

    for (int i = 0; i < N; i++) {
        printf("%d ", sequence[i] * x);
    }
    printf("\n");

    return 0;
}

在此解决方案中,我们首先定义一个变量N,用于存储整数序列的长度。

然后,我们使用scanf函数读取N的值。

接下来,我们定义一个整数数组sequence,大小为N,用于存储整数序列。

使用循环结构,我们遍历整数序列,并使用scanf函数将每个整数读取到sequence数组中。

然后,我们定义一个变量x,用于存储放大倍数。

再次使用scanf函数,我们读取x的值。

接下来,使用循环结构,我们遍历整数序列,并将每个整数乘以x,然后使用printf函数输出结果。

最后,我们使用printf函数输出换行符,以便将结果打印在一行。

编译并运行上述代码,根据给定的输入示例,将会输出"2 10 14",表示原序列放大后的序列。

第2题:统一文件名

小A在命名文件的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将目录下的文件统一规范的格式,即文件名的第一个字符如果是字母要大写,其他字母小写。如将Test、test整理成Test。
时间限制:1000
内存限制:65536
输入
第一行一个数字n,表示有n个文件名要统一,n不超过100。 接下来n行,每行一个单词,长度不超过20,表示文件的名字。文件名由字母、数字和-组成。
输出
n行,每行一个单词,对应统一后的文件名。
样例输入
4
Test
data
2-TEST
problem-6
样例输出
Test
Data
2-test
Problem-6

以下是使用C语言编写的解决方案,用于将给定的文件名统一规范化格式:

#include <stdio.h>
#include <ctype.h>

void normalizeFilename(char *filename) {
    int length = strlen(filename);

    // 将第一个字符转换为大写
    if (isalpha(filename[0])) {
        filename[0] = toupper(filename[0]);
    }

    // 将其余字符转换为小写
    for (int i = 1; i < length; i++) {
        filename[i] = tolower(filename[i]);
    }
}

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

    char filenames[n][21];
    for (int i = 0; i < n; i++) {
        scanf("%s", filenames[i]);
        normalizeFilename(filenames[i]);
    }

    for (int i = 0; i < n; i++) {
        printf("%s\n", filenames[i]);
    }

    return 0;
}

在此解决方案中,我们首先定义一个函数normalizeFilename,用于将给定的文件名规范化为统一格式。

在函数中,我们首先获取文件名的长度。

然后,我们将文件名的第一个字符转换为大写,使用isalpha函数检查字符是否为字母,使用toupper函数将字符转换为大写。

接下来,我们使用循环结构,将文件名的其余字符转换为小写,使用tolower函数将字符转换为小写。

main函数中,我们首先定义一个变量n,用于存储文件名的个数。

然后,使用scanf函数读取n的值。

接下来,我们定义一个二维字符数组filenames,大小为n行,每行最多可以存储20个字符的文件名。

使用循环结构,我们遍历每个文件名,并使用scanf函数将文件名读取到相应的行中。

接着,我们调用normalizeFilename函数,将每个文件名规范化为统一格式。

最后,使用循环结构,我们遍历每个文件名,并使用printf函数输出结果。每个文件名占一行。

编译并运行上述代码,根据给定的输入示例,将会输出统一规范化后的文件名。

第3题:内部元素之和

输入一个整数矩阵,计算位于矩阵内部的元素之和。所谓矩阵内部的元素,不在第一行和最后一行的元素以及第一列和最后一列的元素。
时间限制:1000
内存限制:65536
输入
第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。 接下来输入的m行数据中,每行包含n个整数(每个数大于等于0,小于1000),整数之间以一个空格分开。
输出
输出对应矩阵的内部元素和
样例输入
3 3
3 4 1
3 7 1
2 0 1
样例输出
7

以下是使用C语言编写的解决方案,用于计算位于矩阵内部的元素之和:

#include <stdio.h>

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

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

    int sum = 0;
    for (int i = 1; i < m - 1; i++) {
        for (int j = 1; j < n - 1; j++) {
            sum += matrix[i][j];
        }
    }

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

    return 0;
}

在此解决方案中,我们首先定义两个变量mn,分别表示矩阵的行数和列数。

然后,使用scanf函数读取mn的值。

接下来,我们定义一个二维整数数组matrix,大小为mn列,用于存储矩阵。

使用两个嵌套的循环结构,我们遍历矩阵的每个元素,使用scanf函数将每个整数读取到相应的位置。

然后,我们定义一个变量sum,用于存储内部元素之和。初始值为0。

使用两个嵌套的循环结构,我们遍历位于矩阵内部的元素,即从第二行到倒数第二行,从第二列到倒数第二列。我们忽略了第一行、最后一行、第一列和最后一列的元素。

在每个内部元素的位置,我们将该元素的值累加到sum中。

最后,我们使用printf函数输出sum的值,表示矩阵内部元素之和。

编译并运行上述代码,根据给定的输入示例,将会输出"7",表示矩阵内部元素之和为7。

第4题:整数排序

给定10个整数的序列,要求对其重新排序。排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按输入顺序逆序排序。
时间限制:1000
内存限制:65536
输入
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
输出
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
样例输入
4 7 3 13 11 12 0 47 34 98
样例输出
47 13 11 7 3 98 34 0 12 4

以下是使用C语言编写的解决方案,用于对给定的10个整数进行排序:

#include <stdio.h>

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] < arr[j + 1]) {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }
}

void customSort(int arr[], int n) {
    int odd[n];
    int even[n];
    int oddCount = 0;
    int evenCount = 0;

    for (int i = 0; i < n; i++) {
        if (arr[i] % 2 == 0) {
            even[evenCount++] = arr[i];
        } else {
            odd[oddCount++] = arr[i];
        }
    }

    bubbleSort(odd, oddCount);

    for (int i = evenCount - 1; i >= 0; i--) {
        printf("%d ", even[i]);
    }

    for (int i = 0; i < oddCount; i++) {
        printf("%d ", odd[i]);
    }
}

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

    customSort(arr, 10);

    return 0;
}

在此解决方案中,我们首先定义了一个函数swap,用于交换两个整数的值。

然后,我们定义了一个函数bubbleSort,用于对数组进行冒泡排序。

bubbleSort函数中,我们使用两个嵌套的循环结构,逐个比较相邻的元素,并根据条件进行交换,从而将较大的元素移动到数组的前面。

接下来,我们定义了一个函数customSort,用于按照给定的排序要求对数组进行排序。

customSort函数中,我们首先定义了两个辅助数组oddeven,用于存储奇数和偶数。

我们遍历原始数组,并根据奇偶性将元素分别存储到oddeven数组中。

然后,我们对odd数组进行冒泡排序,以满足要求的奇数排序要求。

接着,我们逆序遍历even数组,并按顺序输出其中的元素,以满足偶数的逆序排序要求。

最后,我们按顺序输出odd数组中的元素。

main函数中,我们定义一个整数数组arr,用于存储输入的10个整数。

使用循环结构,我们读取输入的10个整数,并将它们存储到arr数组中。

然后,我们调用customSort函数,对数组进行排序和输出。

编译并运行上述代码,根据给定的输入示例,将会输出排序后的10个整数。

第5题:计算好数

若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为好数。
例如:
(13)10 = (1101)2,其中1的个数为3,0的个数为1,则此数是好数;
(10)10 = (1010)2,其中1的个数为2,0的个数也为2,则此数不是好数;
(24)10 = (11000)2,其中1的个数为2,0的个数为3,则此数不是好数;
对于给定的N,写程序求出1~N之中(包括1与N)中的好数个数。
时间限制:1000
内存限制:65536
输入
一个整数,题目中的N(N ≤ 1000)
输出
一个整数,表示1~N之中(包括1与N)中的好数个数
样例输入
10
样例输出
5

以下是使用C语言编写的解决方案,用于计算1~N范围内的好数个数:

#include <stdio.h>

int isGoodNumber(int n) {
    int ones = 0;
    int zeros = 0;

    while (n > 0) {
        if (n % 2 == 1) {
            ones++;
        } else {
            zeros++;
        }
        n /= 2;
    }

    return ones > zeros;
}

int countGoodNumbers(int N) {
    int count = 0;

    for (int i = 1; i <= N; i++) {
        if (isGoodNumber(i)) {
            count++;
        }
    }

    return count;
}

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

    int result = countGoodNumbers(N);
    printf("%d\n", result);

    return 0;
}

在此解决方案中,我们定义了两个函数。

isGoodNumber函数用于判断一个整数是否为好数。我们使用循环结构,将整数转换为二进制数,并统计其中1和0的个数。如果1的个数大于0的个数,则返回1,表示是好数;否则返回0,表示不是好数。

countGoodNumbers函数用于计算1~N范围内的好数个数。我们使用循环结构,从1遍历到N,对每个数调用isGoodNumber函数进行判断,如果返回值为1,则计数器加1。

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

然后,调用countGoodNumbers函数计算好数个数,并将结果存储到变量result中。

最后,我们使用printf函数输出result的值,表示1~N范围内的好数个数。

编译并运行上述代码,根据给定的输入示例,将会输出"5",表示1~10范围内的好数个数为5。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/879222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个脚本 专治杂乱

背景 之前不是自己手动搞了一个COS嘛&#xff0c;直接复制粘贴图片&#xff0c;上传到后端的服务器&#xff0c;返回一个可访问的地址。我在哔哩哔哩上也分享过这样的一期视频。 今天偶尔上服务器一看&#xff0c;我靠&#xff0c;我的文件真的乱&#xff01; 这还得了了&…

【C++精华铺】7.C++内存管理

目录 1. C语言动态内存管理 2. C内存管理方式 2.1 new/delete和new T[]/delete[] 2.1.1 操作内置类型 2.1.2 操作自定义类型 2.2 new/delete和new T[]/delete[]的原理 2.2.1 原理 2.2.2 operator new和operator delete 2.2.3 new T[]的特殊处理&#xff08;可以…

Altium DXP原理图转换成Orcad Capture

买了个开发板&#xff0c;原图是Altium DXP的&#xff0c;但是个人熟悉的Orcad&#xff0c;PCB无所谓了&#xff0c;反正都要重画&#xff0c;但是原理图是件大工程&#xff0c;重画还可能出问题&#xff0c;所以想着把DXP转成Capture格式&#xff0c;查阅了相关文档&#xff0…

【Linux命令详解 | ps命令】 ps命令用于显示当前系统中运行的进程列表,帮助监控系统状态。

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 基本用法2. 显示所有进程3. 显示进程详细信息4. 根据CPU使用率排序5. 查找特定进程6. 显示特定用户的进程7. 显示进程内存占用8. 查看进程树9. 实时监控进程10. 查看特定进程的详细信息11. 查看特定用户的进程统计…

RTT(RT-Thread)串口设备(RTT保姆级教程)

目录 UART串口设备 串口概述 访问串口设备接口 数据发送方法 数据接收方法 串口设备使用流程 串口中断接受实例 串口配置及串口发送 串口中断接收 DMA接收 UART串口设备 串口概述 本章主要介绍串口设备在RT-Thread操作系统中应用层如何使用。关于串口设备的使用&am…

解析TCP/IP协议的分层模型

了解ISO模型&#xff1a;构建通信的蓝图 为了促进网络应用的普及&#xff0c;国际标准化组织&#xff08;ISO&#xff09;引入了开放式系统互联&#xff08;Open System Interconnect&#xff0c;OSI&#xff09;模型。这个模型包括了七个层次&#xff0c;从底层的物理连接到顶…

Spring AOP实践:如何通过aop记录日志?

目录 一、依赖 二、自定义注解 三、切面 一、依赖 以SpringBoot工程为例&#xff0c;导入aop的依赖。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 二…

GCviewer分析java垃圾回收的情况

一&#xff0c;下载并打包 1.在github上下载gcviewer,并解压。 2. 运行maven命令打包。mvn clean package -DskipTests 二&#xff0c;启动GCViewer 进入target目录&#xff0c;运行 java -jar gcviewer-1.37-SNAPSHOT.jar 运行后&#xff0c;会出来界面 三&#xff0c;加参…

轻松学会WiFi模块(ESP8266)—基于STM32,学到就是赚到!

目录 前言 一、ESP8266介绍 二、如何实现WiFi传输&#xff1f;代码详解附上 三、结果实现流程与展示 四、总结 题外话&#xff1a; 前言 哎哎哎&#xff0c;发觉好久没有更新博客了&#xff0c;最近一直事情比较多&#xff0c;也没什么时间注意博客&#xff0c;不过接下…

每天一道leetcode:1129. 颜色交替的最短路径(图论中等广度优先遍历)

今日份题目&#xff1a; 给定一个整数 n&#xff0c;即有向图中的节点数&#xff0c;其中节点标记为 0 到 n - 1。图中的每条边为红色或者蓝色&#xff0c;并且可能存在自环或平行边。 给定两个数组 redEdges 和 blueEdges&#xff0c;其中&#xff1a; redEdges[i] [ai, bi…

opencv实战项目 手势识别-实现尺寸缩放效果

手势识别系列文章目录 手势识别是一种人机交互技术&#xff0c;通过识别人的手势动作&#xff0c;从而实现对计算机、智能手机、智能电视等设备的操作和控制。 1. opencv实现手部追踪&#xff08;定位手部关键点&#xff09; 2.opencv实战项目 实现手势跟踪并返回位置信息&…

【Git】安装以及基本操作

目录 一、初识Git二、 在Linux底下安装Git一&#xff09;centOS二&#xff09;Ubuntu 三、 Git基本操作一&#xff09; 创建本地仓库二&#xff09;配置本地仓库三&#xff09;认识工作区、暂存区、版本库四&#xff09;添加文件五&#xff09;查看.git文件六&#xff09;修改文…

问道管理:旅游酒店板块逆市拉升,桂林旅游、华天酒店涨停

游览酒店板块14日盘中逆市拉升&#xff0c;到发稿&#xff0c;桂林游览、华天酒店涨停&#xff0c;张家界涨超8%&#xff0c;君亭酒店涨超5%&#xff0c;众信游览、云南游览涨逾4%。 音讯面上&#xff0c;8月10日&#xff0c;文旅部办公厅发布康复出境团队游览第三批名单&#…

Flink源码之StreamTask启动流程

每个ExecutionVertex分配Slot后&#xff0c;JobMaster就会向Slot所在的TaskExecutor提交RPC请求执行Task&#xff0c;接口为TaskExecutorGateway::submitTask CompletableFuture<Acknowledge> submitTask(TaskDeploymentDescriptor tdd, JobMasterId jobMasterId, RpcTi…

无涯教程-Perl - select函数

描述 此函数将输出的默认文件句柄设置为FILEHANDLE,如果未指定文件句柄,则设置由print和write等功能使用的文件句柄。如果未指定FILEHANDLE,则它将返回当前默认文件句柄的名称。 select(RBITS,WBITS,EBITS,TIMEOUT)使用指定的位调用系统功能select()。 select函数设置用于处理…

Postgresql 基础使用语法

1.数据类型 1.数字类型 类型 长度 说明 范围 与其他db比较 Smallint 2字节 小范围整数类型 32768到32767 integer 4字节 整数类型 2147483648到2147483647 bigint 8字节 大范围整数类型 -9233203685477808到9223203685477807 decimal 可变 用户指定 精度小…

用友Java后端笔试2023-8-5

计算被直线划分区域 在笛卡尔坐标系&#xff0c;存在区域[A,B],被不同线划分成多块小的区域&#xff0c;简单起见&#xff0c;假设这些不同线都直线并且不存在三条直线相交于一点的情况。 img 那么&#xff0c;如何快速计算某个时刻&#xff0c;在 X 坐标轴上[ A&#xff0c;…

读书笔记 |【项目思维与管理】➾ 项目成为一种生存方式

读书笔记 |【项目思维与管理】➾ 项目成为一种生存方式 一、理解项目固有的挑战二、项目对企业的价值三、知识型企业的经营逻辑四、做项目管理的推进者 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 项目无处不在&#xff0c;项目已经成为…

【佳佳怪文献分享】安全人机交互的学习责任分配与自动驾驶应用

标题&#xff1a;Learning Responsibility Allocations for Safe Human-Robot Interaction with Applications to Autonomous Driving 作者&#xff1a;Ryan K. Cosner, Yuxiao Chen, Karen Leung, and Marco Pavone 来源&#xff1a;2023 IEEE International Conference on …

鸿蒙开发学习笔记2——实现页面之间跳转

鸿蒙开发学习笔记2——实现页面之间跳转 问题背景 上篇文章中&#xff0c;介绍了鸿蒙开发如何新建一个项目跑通hello world&#xff0c;本文将介绍在新建的项目中实现页面跳转的功能。 问题分析 ArkTS工程目录结构&#xff08;FA模型&#xff09; 各目录和路径的介绍如下…