当前位置: 首页 > 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…...

服务器健康摩尔斯电码:深度解读S0-S5状态指示灯

当服务器机柜中闪烁起神秘的琥珀色灯光&#xff0c;运维人员的神经瞬间绷紧——这些看似简单的Sx指示灯&#xff0c;实则是服务器用硬件语言发出的求救信号。掌握这套"摩尔斯电码"&#xff0c;等于拥有了预判故障的透视眼。 一、状态指示灯&#xff1a;服务器的生命体…...

[AI绘画]sd学习记录(二)文生图参数进阶

目录 7.高分辨率修复&#xff1a;以小博大8.细化器&#xff08;Refiner&#xff09;&#xff1a;两模型接力9.随机数种子&#xff08;Seed&#xff09;&#xff1a;复现图片吧 本文接续https://blog.csdn.net/qq_23220445/article/details/148460878?spm1001.2014.3001.5501…...

vscode调试deepspeed的方法之一(无需调整脚本)

现在deepspeed的脚本文件是&#xff1a; # 因为使用 RTX 4000 系列显卡时&#xff0c;不支持通过 P2P 或 IB 实现更快的通信宽带&#xff0c;需要设置以下两个环境变量 # 禁用 NCCL 的 P2P 通信&#xff0c;以避免可能出现的兼容性问题 export NCCL_P2P_DISABLE"1" …...

go语言学习 第7章:数组

第7章&#xff1a;数组 数组是一种基本的数据结构&#xff0c;用于存储相同类型的元素集合。在Go语言中&#xff0c;数组的大小是固定的&#xff0c;一旦定义&#xff0c;其长度不可改变。本章将详细介绍Go语言中数组的定义、初始化、访问、遍历以及一些常见的操作。 一、数组…...

阿里云ACP云计算备考笔记 (4)——企业应用服务

目录 第一章 企业应用概览 第二章 云解析 1、云解析基本概念 2、域名管理流程 3、云解析记录类型 4、域名管理 ① 开启注册局安全锁 ② 域名赎回 第二章 内容分发网络CDN 1、CDN概念 2、使用CDN前后对比 3、使用CDN的优势 4、阿里云CDN的优势 5、配置网页性能优化…...

【华为云学习与认证】以华为云物联网为基座的全栈开发(从物联网iot平台模块到应用展示、数据分析、机器学习、嵌入式开发等)的系统性学习与认证路线

总目标 学习以华为云物联网为基座的全栈开发&#xff08;从物联网iot平台模块到应用展示、数据分析、机器学习、嵌入式开发等&#xff09;的系统性学习与认证路线。计划包含阶段学习、技术文档、实操实际操作、开发路径与考证规划&#xff0c;提供职业生涯基础性规划。 注意&…...

onSaveInstanceState() 和 ViewModel 在数据保存能力差异

一、设计目标差异 ​​维度​​onSaveInstanceState()ViewModel​​核心目的​​保存 ​​瞬态 UI 状态​​&#xff08;如用户输入、滚动位置&#xff09;&#xff0c;应对进程意外终止或配置变更。管理 ​​业务逻辑相关数据​​&#xff0c;在配置变更时保留数据&#xff0…...

算法练习-回溯

今天开始新的章节&#xff0c;关于算法中回溯法的练习&#xff0c;这部分题目的难度还是比较大的&#xff0c;但是十分锻炼人的思维与思考能力。 处理这类题目首先要注意几个基本点&#xff1a; 1.关于递归出口的设置&#xff0c;这是十分关键的&#xff0c;要避免死循环的产…...

Kafka入门-消费者

消费者 Kafka消费方式&#xff1a;采用pull&#xff08;拉&#xff09;的方式&#xff0c;消费者从broker中主动拉去数据。使用pull的好处就是消费者可以根据自身需求&#xff0c;进行拉取数据&#xff0c;但是坏处就是如果Kafka没有数据&#xff0c;那么消费者可能会陷入循环…...

【C语言】C语言经典小游戏:贪吃蛇(下)

文章目录 一、游戏前准备二、游戏开始1、游戏开始函数&#xff08;GameStart&#xff09;1&#xff09;打印欢迎界⾯&#xff08;WelcomeToGame&#xff09;2&#xff09;创建地图&#xff08;CreateMap&#xff09;3&#xff09;初始化蛇⾝&#xff08;InitSnake&#xff09;4…...