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

在这里插入图片描述

第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.mzph.cn/news/37351.shtml

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

相关文章

(css)点击前隐藏icon图表 点击后显示

(css)点击前隐藏icon图表 点击后显示 效果 html <liv-for"(item,index) in sessionList":key"index"class"liClass":class"{ active: change2 index }"tabindex"2">...<el-tooltip class"item" effec…

分布式监控平台——Zabbix

市场上常用的监控软件&#xff1a; 传统运维&#xff1a;zabbix、 Nagios 一、zabbix概述 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果&#xff0c;和网站的健康状态。 利用一个优秀的监…

Dedecms V110最新版RCE---Tricks

前言 刚发现Dedecms更新了发布版本&#xff0c;顺便测试一下之前的day有没有修复&#xff0c;突然想到了新的tricks去实现RCE。 文章发布的时候估计比较晚了&#xff0c;一直没时间写了。 利用 /uploads/dede/article_string_mix.php /uploads/dede/article_template_rand.…

Blender增强现实3D模型制作指南【AR】

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 将静态和动画 3D 内容集成到移动增强现实 (AR) 体验中是增强用户沉浸感和参与度的高效方法。 然而&#xff0c;为 AR 创建 3D 对象可能相当艰巨&#xff0c;尤其是对于那些缺乏 3D 建模经验的人来说。 与添加视频或照片 AR…

THUDM/chatglm2-6b-int4体验

在gpu下 gpu&#xff1a; Telsa T4 资源消耗&#xff1a;RAM大概4G&#xff0c;GPU显存大概6G # 安装transformers等包 !pip install protobuf transformers4.30.2 cpm_kernels torch>2.0 gradio mdtex2html sentencepiece accelerate# 导入AutoTokenizer, AutoModel from…

CSAPP Lec01

1. CMU 15213_15513 CSAPP 深入理解计算机系统 Lecture 01 Course Overview 中英字幕_哔哩哔哩_bilibili 从这个课程中可以学到什么&#xff1f;&#xff08;为什么要学这门课&#xff09; Great Reality #1&#xff08;数字类型&#xff09;: Ints are not Integers, Floats…

idea打jar包

目录 1、打包设置 2、打包介绍 3、开始打包 1、打包设置 先设置要打包的模块信息&#xff0c;即打包进去的内容。如下图所示&#xff1a;File --> Project Structure --> Artifacts&#xff0c;点击&#xff0b;号完成模块创建&#xff0c;其中有两种方式&#xff1a;…

《零基础实践深度学习》(第2版)学习笔记,(二)机器学习和深度学习综述

文章目录 1. 人工智能、机器学习、深度学习的关系2. 机器学习2.1 实现原理2.2 如何实施 3. 深度学习神经网络核心概念 1. 人工智能、机器学习、深度学习的关系 **人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;**是研发用于模拟、延伸和扩展人的智能…

微服务系列(2)--注册中心

在博文&#xff1a;微服务系列(1)里我们提到过注册中心的概念&#xff0c;简单来说微服务注册中心是一个用于存储和管理微服务实例信息的组件&#xff0c;它提供了服务注册、服务发现、服务健康检查等功能&#xff0c;以确保微服务之间的稳定通信。在微服务架构中&#xff0c;各…

应用层协议——TCP(上)

文章目录 1. TCP协议1.1 TCP协议段格式1.2 确认应答(ACK)机制1.3 16位窗口大小1.4 6位标志位1.4.1 TCP三次握手 1.5 确认应答(ACK)机制1.6 超时重传机制1.7 连接管理机制1.7.1 理解TIME_WAIT状态1.7.2 理解 CLOSE_WAIT 状态 1. TCP协议 TCP全称为传输控制协议&#xff0c;意思…

〔AI 绘画〕Stable Diffusion 之 VAE 篇

✨ 目录 &#x1f388; 什么是VAE&#x1f388; 开启VAE&#x1f388; 下载常见的VAE&#x1f388; 对比不同VAE生成的效果 &#x1f388; 什么是VAE VAE&#xff1a;是 Variational Auto-Encoder 的简称&#xff0c;也就是变分自动编码器可以把它理解成给图片加滤镜&#xff…

JavaWeb-Filter过滤器

目录 Filter过滤器 1. Filter的生命周期 2.Filter的配置 3.拦截路径 4.拦截具体的使用 5.拦截方式配置&#xff08;资源被访问方式&#xff09; 6.FilterChain拦截链 Filter过滤器 filter是过滤器&#xff0c;相比于Servlet的发送请求&#xff0c;filter是用于拦截请求。…

2023-08-14 linux 串口终端输入长命令不换行,覆盖前面内容,stty命令设置串口终端行列数

一、linux 串口终端输入长命令不换行&#xff0c;覆盖前面内容&#xff0c;现象如下图&#xff1a; 二、解决方法&#xff1a;用stty 命令设置行列数 stty columns 200 stty rows 10三、参考文章 https://www.cnblogs.com/goloving/p/15170537.html 常用Linux串口设备操作命…

【Servlet】(Servlet API HttpServlet 处理请求 HttpServletRequest 打印请求信息 前端给后端传参)

文章目录 Servlet APIHttpServlet处理请求 HttpServletRequest打印请求信息前端给后端传参 Servlet API Servlet中常用的API HttpServlet 实际开发的时候主要重写 doXXX 方法, 很少会重写 init / destory / service destory 服务器终止的时候会调用. //下面的注解把当前类和…

gin的占位符:和通配符*

1、用法 在 Gin 路由中&#xff0c;可以使用一个通配符&#xff08;*&#xff09;或一个占位符&#xff08;:&#xff09;来捕获 URL 的一部分。 r.GET("/royal/:id", func(c *gin.Context) {id : c.Param("id")//fmt.Println("into :id")c.Str…

HBase API

我们之后的实际开发中不可能在服务器那边直接使用shell命令一直敲的&#xff0c;一般都是通过API进行操作的。 环境准备 新建Maven项目&#xff0c;导入Maven依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>…

命令执行漏洞

1、命令执行漏洞 1.1、简介 Django是用Python开发的一个免费开源的Web结构&#xff0c;几乎包括了Web使用方方面面&#xff0c;能够用于快速建立高性能、文雅的网站&#xff0c;Diango提供了许多网站后台开发常常用到的模块&#xff0c;使开发者可以专注于业务部分。 1.2、漏…

【删除vlan的方法】

提示错误 [SW1]undo vlan 10 Error: The VLAN has a L3 interface. Please delete it first. 解决办法 undo interface Vlanif10 #删除vlan 10下的接口 [SW1-GigabitEthernet0/0/1]dis this #删除下列的IP

接口自动化必备技能——jmeter提取token方式以及设置成全局变量(跨线程组传token值)方式

前言 今天Darren洋教大家如何使用jmeter中的插件来进行token值的提取与调用&#xff0c;今天Darren洋介绍两种jmeter提取token值的方式&#xff0c;一种是在当前线程组中直接提取token值&#xff0c;一种是跨线程组的方式进行token值的提取并调用给不同线程组里的HTTP接口使用。…

如何读取文件夹内的诸多文件,并选择性的保留部分文件

目录 问题描述: 问题解决: 问题描述: 当前有一个二级文件夹,第一层是文件夹名称是“Papers(LNAI14302-14304)",第二级文件夹目录名称如下图蓝色部分所示。第三层为存放的文件,如下下图所示,每一个文件中,均存放三个文件,分别为copyright.pdf, submission.pdf, s…