当前位置: 首页 > news >正文

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

在这里插入图片描述

第1题:字符统计

给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。
输入
输入包含一行,一个字符串,长度不超过1000。
输出
输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。
样例输入
abbccc
样例输出
c 3

下面是一个使用C语言编写的字符统计问题的程序的示例代码:

#include <stdio.h>
#include <string.h>int main() {char str[1001];scanf("%s", str);int count[26] = {0};  // 用于统计每个字符出现的次数,下标0代表字符'a',下标1代表字符'b',以此类推int len = strlen(str);for (int i = 0; i < len; i++) {count[str[i] - 'a']++;  // 统计字符出现的次数}char maxChar;int maxCount = 0;for (int i = 0; i < 26; i++) {if (count[i] > maxCount) {maxCount = count[i];maxChar = i + 'a';}}printf("%c %d\n", maxChar, maxCount);return 0;
}

在上述代码中,我们首先定义了一个字符数组str来保存输入的字符串。

然后,我们定义一个整数数组count,用于统计每个字符出现的次数。数组的下标从0到25分别对应字符’a’到’z’。

接下来,我们使用strlen函数获取输入字符串的长度,然后使用一个循环遍历字符串的每个字符。通过将字符减去字符’a’的ASCII码值,将其映射到count数组的正确下标上,并将对应下标的元素加1,以统计字符出现的次数。

完成字符统计后,我们定义变量maxCharmaxCount,分别用于保存出现次数最多的字符和该字符出现的次数。初始时,将maxCount设置为0。

然后,我们使用另一个循环遍历count数组,找到出现次数最多的字符。如果当前字符出现的次数大于maxCount,则更新maxCountmaxChar的值。

最后,我们使用printf函数输出maxCharmaxCount的值,并在中间加上一个空格。

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

第2题:图像处理

给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:
1.四周最外侧的像素点灰度值不变;
2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。
时间限制:1000
内存限制:65536
输入
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。 接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
输出
n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。
样例输入
4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100
样例输出
100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100

下面是一个使用C语言编写的图像模糊处理问题的程序的示例代码:

#include <stdio.h>int main() {int n, m;scanf("%d %d", &n, &m);int image[n][m];// 读取图像像素值for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {scanf("%d", &image[i][j]);}}int blurredImage[n][m];// 模糊化处理for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (i == 0 || i == n - 1 || j == 0 || j == m - 1) {// 四周最外侧的像素点保持不变blurredImage[i][j] = image[i][j];} else {// 中间像素点的灰度值为周围五个像素点的平均值blurredImage[i][j] = (image[i][j] + image[i - 1][j] + image[i + 1][j] + image[i][j - 1] + image[i][j + 1]) / 5;}}}// 输出模糊处理后的图像for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {printf("%d", blurredImage[i][j]);if (j < m - 1) {printf(" ");}}printf("\n");}return 0;
}

在上述代码中,我们首先使用scanf函数读取图像的行数n和列数m

然后,我们定义一个二维数组image来保存图像的像素值。

接下来,我们使用两个嵌套的循环读取输入的像素值,并将其保存到image数组中。

然后,我们定义另一个二维数组blurredImage来保存模糊处理后的图像像素值。

接下来,我们使用两个嵌套的循环遍历图像的每个像素点。如果当前像素点是图像的四周最外侧的像素点,则将其灰度值保持不变;否则,将当前像素点及其上下左右相邻的四个像素点的灰度值相加,然后除以5取整,得到模糊处理后的新灰度值。

完成模糊处理后,我们使用两个嵌套的循环遍历blurredImage数组,并使用printf函数输出模糊处理后的图像像素值。在每行的输出中,相邻的两个像素值之间用一个空格隔开,每行结束后输出一个换行符。

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

第3题:替换单词

输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
时间限制:1000
内存限制:65536
输入
输入包括3行, 第1行是包含多个单词的字符串 s;
第2行是待替换的单词a(长度 <= 100);
第3行是a将被替换的单词b(长度 <= 100).
s, a, b 最前面和最后面都没有空格.
输出
输出只有 1 行,将s中所有单词a替换成b之后的字符串。
样例输入
You want someone to help you
You
I
样例输出
I want someone to help you

下面是一个使用C语言编写的替换单词问题的程序的示例代码:

#include <stdio.h>
#include <string.h>void replaceWord(char *str, const char *oldWord, const char *newWord) {char *pos, temp[100];int index = 0;int oldWordLen = strlen(oldWord);// 在字符串中找到要替换的单词,并将其替换为新单词while ((pos = strstr(str, oldWord)) != NULL) {strcpy(temp, str);index = pos - str;str[index] = '\0';strcat(str, newWord);strcat(str, temp + index + oldWordLen);}
}int main() {char str[1000];char oldWord[100], newWord[100];// 读取输入的字符串、待替换的单词和替换后的单词fgets(str, sizeof(str), stdin);fgets(oldWord, sizeof(oldWord), stdin);fgets(newWord, sizeof(newWord), stdin);// 去除字符串中的换行符str[strcspn(str, "\n")] = '\0';oldWord[strcspn(oldWord, "\n")] = '\0';newWord[strcspn(newWord, "\n")] = '\0';// 替换单词replaceWord(str, oldWord, newWord);// 输出替换后的字符串printf("%s\n", str);return 0;
}

在上述代码中,我们首先定义了一个replaceWord函数,用于在字符串中替换指定的单词。

replaceWord函数中,我们使用strstr函数在字符串中查找要替换的单词的位置。如果找到了要替换的单词,我们将字符串切割成三部分:替换位置之前的部分、替换位置的单词、替换位置之后的部分。然后,我们使用strcpy函数将字符串的前半部分复制到临时数组temp中,使用strcat函数将新单词和剩余部分拼接到字符串中,以完成替换。

main函数中,我们首先定义了字符数组stroldWordnewWord,分别用于保存输入的字符串、待替换的单词和替换后的单词。

然后,我们使用fgets函数逐行读取输入的字符串、待替换的单词和替换后的单词。注意,fgets函数会读取换行符,因此我们需要使用strcspn函数将换行符替换为字符串结束符\0

接下来,我们调用replaceWord函数替换字符串中的单词。

最后,我们使用printf函数输出替换后的字符串。

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

第4题:偶数降序输出

给定一个长度为N (不大于500) 的正整数序列,请将其中的所有偶数取出,并按降序输出。
输入描述:
共两行;第一行为N;第二行为N个正数,其间用空格间隔
输出描述:
降序输出的偶数序列,数与数之间用空格间隔
数据保证至少有一个偶数
样例输入:
10
1 3 2 6 5 4 9 8 7 10
样例输出:
10 8 6 4 2

下面是一个使用C语言编写的偶数降序输出问题的程序的示例代码:

#include <stdio.h>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]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main() {int N;scanf("%d", &N);int sequence[N];int evenCount = 0;// 读取序列并筛选出偶数for (int i = 0; i < N; i++) {scanf("%d", &sequence[i]);if (sequence[i] % 2 == 0) {evenCount++;}}int evenNumbers[evenCount];int index = 0;// 将偶数存储到新数组evenNumbers中for (int i = 0; i < N; i++) {if (sequence[i] % 2 == 0) {evenNumbers[index] = sequence[i];index++;}}// 使用冒泡排序对偶数进行降序排序bubbleSort(evenNumbers, evenCount);// 输出降序排列的偶数序列for (int i = 0; i < evenCount; i++) {printf("%d", evenNumbers[i]);if (i < evenCount - 1) {printf(" ");}}printf("\n");return 0;
}

在上述代码中,我们首先使用scanf函数读取输入的整数N,表示序列的长度。

然后,我们定义一个数组sequence来保存输入的正整数序列,并定义一个变量evenCount来记录偶数的个数。

接下来,我们使用一个循环读取输入的正整数序列,并在读取的同时判断每个数是否为偶数,如果是偶数,则将evenCount加1。

然后,我们定义一个新的数组evenNumbers,其大小为evenCount,用于存储筛选出的偶数。

接着,我们使用另一个循环将偶数存储到evenNumbers数组中。

之后,我们使用冒泡排序算法对evenNumbers数组进行降序排序。

最后,我们使用一个循环输出降序排列的偶数序列,每个数之间用空格隔开。

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

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

现有n个整数,将其中个位数为k的数进行累加求和
输入
第一行一个整数n。第二行n个非负整数,以空格分割,每个数不大于100000。第三行一个整数k。
输出
输出满足题目要求的累加和
样例输入
10
2 5 7 17 11 18 4 27 1 7
7
样例输出
58

下面是一个使用C语言编写的满足条件的数的累加求和问题的程序的示例代码:

#include <stdio.h>int main() {int n;scanf("%d", &n);int numbers[n];int k;scanf("%d", &k);// 读取n个非负整数for (int i = 0; i < n; i++) {scanf("%d", &numbers[i]);}int sum = 0;// 对满足个位数为k的数进行累加求和for (int i = 0; i < n; i++) {if (numbers[i] % 10 == k) {sum += numbers[i];}}// 输出累加和printf("%d\n", sum);return 0;
}

在上述代码中,我们首先使用scanf函数读取输入的整数n,表示非负整数的个数。

然后,我们定义一个数组numbers来保存输入的非负整数序列。

接下来,我们使用一个循环读取输入的非负整数序列,并将每个数存储到numbers数组中。

接着,我们使用scanf函数读取输入的整数k,表示要求个位数为k的数。

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

之后,我们使用一个循环遍历numbers数组,并判断每个数的个位数是否为k,如果满足条件,则将该数累加到sum中。

最后,我们使用printf函数输出累加和sum

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

相关文章:

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

第1题&#xff1a;字符统计 给定一个由a-z这26个字符组成的字符串&#xff0c;统计其中哪个字符出现的次数最多。 输入 输入包含一行&#xff0c;一个字符串&#xff0c;长度不超过1000。 输出 输出一行&#xff0c;包括出现次数最多的字符和该字符出现的次数&#xff0c;中间以…...

HCIP VRRP技术

一、VRRP概述 VRRP&#xff08;Virtual Router Pedundancy Protocol&#xff09;虚拟路由器冗余协议&#xff0c;既能够实现网关的备份&#xff0c;又能够解决多个网关之间互相冲突的问题&#xff0c;从而提高网络可靠性。 局域网中的用户的终端通常采用配置一个默认网关的形…...

JAVA AES ECB/CBC 加解密

JAVA AES ECB/CBC 加解密 1. AES ECB2. AES CBC 1. AES ECB package org.apache.jmeter.functions;/*** author yuyang*/import org.apache.commons.lang3.StringUtils; import java.util.Base64; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec;/*** a…...

Android FrameWork 层 Handler源码解析

Handler生产者-消费者模型 在android开发中&#xff0c;经常会在子线程中进行一些耗时操作&#xff0c;当操作完毕后会通过handler发送一些数据给主线程&#xff0c;通知主线程做相应的操作。 其中&#xff1a;子线程、handler、主线程&#xff0c;其实构成了线程模型中经典的…...

list

目录 迭代器 介绍 种类 本质 介绍 模拟实现 注意点 代码 迭代器 介绍 在C中&#xff0c;迭代器&#xff08;Iterators&#xff09;是一种用于遍历容器&#xff08;如数组、vector、list等&#xff09;中元素的工具 无论容器的具体实现细节如何,访问容器中的元素的方…...

ABeam×Startup丨德硕管理咨询(深圳)创新研究团队前往灵境至维·既明科技进行拜访交流

近日&#xff0c;德硕管理咨询&#xff08;深圳&#xff09;&#xff08;以下简称“ABeam-SZ”&#xff09;创新研究团队一行前往灵境至维既明科技有限公司&#xff08;以下简称“灵境至维”&#xff09;进行拜访交流&#xff0c;探讨线上虚拟空间的商业模式。 现场合影 &…...

TCP的相关性质

文章目录 流量控制拥塞控制拥塞窗口 延迟应答捎带应答面向字节流粘包问题TCP的异常 流量控制 由于接收端处理数据的速度是有限的&#xff0c;如果发送端发的太快&#xff0c;那么接收端的缓冲区就可能会满。此时如果发送端还发数据&#xff0c;就会出现丢包现象&#xff0c;并…...

pointpillars在2D CNN引入自适应注意力机制

在给定的代码中&#xff0c;您想要引入自适应注意力机制。自适应注意力机制通常用于增强模型的感受野&#xff0c;从而帮助模型更好地捕捉特征之间的关系。在这里&#xff0c;我将展示如何在您的代码中引入自适应注意力机制&#xff0c;并提供详细的解释。 首先&#xff0c;让…...

【每日一题】1572. 矩阵对角线元素的和

【每日一题】1572. 矩阵对角线元素的和 1572. 矩阵对角线元素的和题目描述解题思路 1572. 矩阵对角线元素的和 题目描述 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&a…...

leetcode原题:检查子树

题目&#xff1a; 检查子树。你有两棵非常大的二叉树&#xff1a;T1&#xff0c;有几万个节点&#xff1b;T2&#xff0c;有几万个节点。设计一个算法&#xff0c;判断 T2 是否为 T1 的子树。 如果 T1 有这么一个节点 n&#xff0c;其子树与 T2 一模一样&#xff0c;则 T2 为…...

2023年国赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…...

可视化绘图技巧100篇进阶篇(七)-三维堆积柱形图(3D Stacked Bar Chart)

目录 前言 适用场景 图例 绘图工具及代码实现 HighCharts echarts MATLAB...

React源码解析18(7)------ 实现事件机制(onClick事件)

摘要 在上一篇中&#xff0c;我们实现了useState的hook&#xff0c;但由于没有实现事件机制&#xff0c;所以我们只能将setState挂载在window上。 而这一篇主要就是来实现事件系统&#xff0c;从而实现通过点击事件进行setState。 而在React中&#xff0c;虽然我们是将事件绑…...

Android app专项测试之耗电量测试

前言 耗电量指标 待机时间成关注目标 提升用户体验 通过不同的测试场景&#xff0c;找出app高耗电的场景并解决 01、需要的环境准备 1、python2.7(必须是2.7&#xff0c;3.X版本是不支持的) 2、golang语言的开发环境 3、Android SDK 此三个的环境搭建这里就不详细说了&am…...

设计模式-面试常问

1.单例模式 保证系统中&#xff0c;一个类&#xff0c;只有一个实例&#xff0c;并且提供对外访问。 优点&#xff1a;只有一个对象&#xff0c;可以节省资源。适合频繁创建销毁对象的场景。 实现&#xff1a;要用到static&#xff0c;静态私有对象。暴露单例的静态方法。 &…...

聊聊在集群环境中本地缓存如何进行同步

前言 之前有发过一篇文章聊聊如何利用redis实现多级缓存同步。有个读者就给我留言说&#xff0c;因为他项目的redis版本不是6.0版本&#xff0c;因此他使用我文章介绍通过MQ来实现本地缓存同步&#xff0c;他的同步流程大概如下图 他原来的业务流程是每天凌晨开启定时器去爬取…...

【C++深入浅出】初识C++上篇(关键字,命名空间,输入输出,缺省参数,函数重载)

目录 一. 前言 二. 什么是C 三. C关键字初探 四. 命名空间 4.1 为什么要引入命名空间 4.2 命名空间的定义 4.3 命名空间使用 五. C的输入输出 六. 缺省参数 6.1 缺省参数的概念 6.2 缺省参数的分类 七. 函数重载 7.1 函数重载的概念 7.2 函数重载的条件 7.3 C支…...

租房合同范本

房屋租赁合同 甲方&#xff08;出租方&#xff09;&#xff1a; 身份证&#xff1a; 联系电话&#xff1a; 乙方&#xff08;承租方&#xff09;&#xff1a; 身份证&#xff1a; 联系电话&#xff1a; …...

轻薄的ESL电子标签有哪些特性?

在智慧物联逐渐走进千万家的当下&#xff0c;技术变革更加日新月异。ESL电子标签作为科技物联的重要组成部分&#xff0c;是推动千行百业数字化转型的重要技术&#xff0c;促进物联网产业的蓬勃发展。在智慧零售、智慧办公、智慧仓储等领域&#xff0c;ESL电子标签在未来是不可…...

AI 实力:利用 Docker 简化机器学习应用程序的部署和可扩展性

利用 Docker 的强大功能&#xff1a;简化部署解决方案、确保可扩展性并简化机器学习模型的 CI/CD 流程。 近年来&#xff0c;机器学习 (ML) 出现了爆炸性增长&#xff0c;导致对健壮、可扩展且高效的部署方法的需求不断增加。由于训练和服务环境之间的差异或扩展的困难等因素&a…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...