2022 年 9 月青少年软编等考 C 语言二级真题解析

目录

  • T1. 统计误差范围内的数
    • 思路分析
  • T2. 全在其中
    • 思路分析
  • T3. Lab 杯
    • 思路分析
  • T4. 有趣的跳跃
    • 思路分析
  • T5. 反反复复
    • 思路分析

T1. 统计误差范围内的数

统计一个整数序列中与指定数字 m m m 误差范围小于等于 x x x 的数的个数。

时间限制:1 s
内存限制:64 MB

  • 输入
    输入包含三行:
    第一行为 n n n,表示整数序列的长度, n ≤ 100 n \le 100 n100
    第二行为 n n n 个整数,整数之间以一个空格分开;
    第三行包含 2 2 2 个整数,为指定的整数 m m m,误差范围 x x x
  • 输出
    输出为 n n n 个数中与指定数字 m m m 误差范围小于等于 x x x 的数的个数。
  • 样例输入
    5
    1 2 3 4 5
    3 1
    
  • 样例输出
    3
    
  • 提示
    样例中 2 2 2 3 3 3 4 4 4 都满足条件,故答案为 3 3 3

思路分析

此题考查一维数组的查找与统计,属于入门题。

此题与 2021 年 12 月二级 T1 类似,将给定数据存储在数组中之后,依次遍历每一个元素,检测其是否介于 m − x ∼ m + x m-x \sim m+x mxm+x 范围内,若是,则计数器变量累加 1 1 1,最后输出计数器变量的值即可。

/** Name: T1.cpp* Problem: 统计误差范围内的数* Author: Teacher Gao.* Date&Time: 2024/11/15 21:40*/#include <iostream>using namespace std;int main()
{int n, a[105], m, x;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}cin >> m >> x;int tot = 0;for (int i = 1; i <= n; i++) {if (m - x <= a[i] && a[i] <= m + x) {tot++;}}cout << tot;return 0;
}

T2. 全在其中

你设计了一个新的加密技术,可以用一种聪明的方式在一个字符串的字符间插入随机的字符串从而对信息进行编码。由于专利问题,我们将不会详细讨论如何在原有信息中产生和插入字符串。不过,为了验证你的方法,有必要写一个程序来验证原来的信息是否全在最后的字符串之中。

给定两个字符串 s s s t t t,你需要判断 s s s 是否是 t t t 的 “子列”。也就是说,如果你去掉 t t t 中的某些字符,剩下字符将连接而成为 s s s

时间限制:1 s
内存限制:64 MB

  • 输入
    输入包括多个测试样例。每一个都是由空格分隔的由字母数字 ASCII \text{ASCII} ASCII 字符组成的两个特定的字符串 s s s t t t s s s t t t 的长度不超过 100000 100000 100000
  • 输出
    对于每个测试样例,如果 s s s t t t 的 “子列”,则输出 Yes,否则输出 No
  • 样例输入
    sequence subsequence
    person compression
    VERDI vivaVittorioEmanueleReDiItalia
    caseDoesMatter CaseDoesMatter
    
  • 样例输出
    Yes
    No
    Yes
    No
    

思路分析

此题考查字符串遍历与查找,属于入门题。

我们可以依次遍历字符串 s s s 中的每一个字符 s i s_i si,在 t t t 中查找 s i s_i si 是否存在。这里需要设置一个变量 p p p 表示每一个 s i s_i si 开始查找的位置,初始值为 0 0 0,再设置一个标记变量 f l a g flag flag 表示是否查找成功,初始值为 t r u e true true。若在 t t t 中查找到 s i s_i si,则更新下一个字符开始查找的位置,若未找到,则将 f l a g flag flag 置为 f a l s e false false 并结束查找。之后根据 f l a g flag flag 变量的值输出 YesNo

至于不定项输入,使用 while (cin >> ...) 即可。

/** Name: T2.cpp* Problem: 全在其中* Author: Teacher Gao.* Date&Time: 2024/11/15 21:46*/#include <iostream>
#include <string>using namespace std;int main()
{string s, t;while (cin >> s >> t) {int len = s.length(), p = 0;bool flag = true;for (int i = 0; i < len; i++) {int tmp = t.find(s[i], p);if (tmp == -1) {flag = false;break;}p = tmp + 1;}if (flag) cout << "Yes\n";else cout << "No\n";}return 0;
}

T3. Lab 杯

Lab \text{Lab} Lab 杯” 乒乓球赛就要在 PKU \text{PKU} PKU 的实验室之间举行了。人工智能实验室的学生都是乒乓球的狂热分子,都强烈希望代表实验室去比赛。但是有余名额限制,他们之中只能由一个人被选作代表。

为了让选择的过程公平,他们决定打一次单循环赛,每一对学生之间都打一场五局三胜的比赛。赢得最多比赛的人就将代表实验室去比赛。现在 Ava \text{Ava} Ava 手里有一份表,表里面记录了每一场比赛的比分。她应该让谁去比赛?

时间限制:1 s
内存限制:64 MB

  • 输入
    输入包含一组测试数据。
    第一行包含 n n n 2 ≤ n ≤ 100 2 ≤ n ≤ 100 2n100),表示实验室里学生的数目。
    接下来给出一个 n × n n × n n×n 矩阵 A A A。矩阵的每一个元素都是 0 0 0 1 1 1 2 2 2 3 3 3 中的一个。第 i i i 行第 j j j 列的元素 a i j a_{ij} aij 是第 i i i 个学生在和第 j j j 个学生的比赛中赢的局数。 a i j a_{ij} aij a j i a_{ji} aji i ≠ j i ≠ j i=j)正好有一个是 3 3 3,另外一个小于 3 3 3。矩阵的所有对角线元素都是 0 0 0
  • 输出
    输出赢了最多比赛的学生的编号。如果有平分,选择编号最小的。
  • 样例输入
    4
    0 0 3 2
    3 0 3 1
    2 2 0 2
    3 3 3 0
    
  • 样例输出
    4
    

思路分析

此题考查题目信息提取的能力,以及打擂台思想,属于入门题。

按行统计第 i i i 个学生获胜的场数,即 3 3 3 的个数,然后比较所有学生的获胜场数,输出获胜场数最多的学生编号即可。

/** Name: T3.cpp* Problem: Lab 杯* Author: Teacher Gao.* Date&Time: 2024/11/15 22:07*/#include <iostream>using namespace std;int main(){int n, x;int ans_id, ans_num = 0;cin >> n;for (int i = 1; i <= n; i++) {int tot = 0;for (int j = 1; j <= n; j++) {cin >> x;if (x == 3) tot++;}if (tot > ans_num) {ans_num = tot;ans_id = i;}}cout << ans_id;return 0;
}

T4. 有趣的跳跃

一个长度为 n n n n > 0 n>0 n>0)的序列中存在 “有趣的跳跃” 当且仅当相邻元素的差的绝对值经过排序后正好是从 1 1 1 ( n − 1 ) (n-1) (n1)。例如, 1 4 2 3 1\ 4\ 2\ 3 1 4 2 3 存在 “有趣的跳跃”,因为差的绝对值分别为 3 , 2 , 1 3,2,1 3,2,1。当然,任何只包含单个元素的序列一定存在 “有趣的跳跃”。你需要写一个程序判定给定序列是否存在 “有趣的跳跃”。

时间限制:1 s
内存限制:64 MB

  • 输入
    一行,第一个数是 n n n 0 < n < 3000 0 < n < 3000 0<n<3000),为序列长度,接下来有 n n n 个整数,依次为序列中各元素,各元素的绝对值均不超过 1 0 9 10^9 109
  • 输出
    一行,若该序列存在 “有趣的跳跃”,输出 Jolly,否则输出 Not jolly
  • 样例输入
    4 1 4 2 3
    
  • 样例输出
    Jolly
    

思路分析

此题考查桶的思想,属于入门题。

依次将相邻两个元素的差值 x x x 进行标记,在这个过程中,若 x ≥ n x \ge n xn 或者 x x x 已经被标记过,那么就可以确定该序列为 Not jolly。注意差值 x x x 应取绝对值,因为输入序列并不保证递增。

/** Name: T4.cpp* Problem: 有趣的跳跃* Author: Teacher Gao.* Date&Time: 2024/11/15 22:11*/#include <iostream>
#include <cmath>using namespace std;int main() {int n, a[3005] = {0}, b[3005] = {0};cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}for (int i = 2; i <= n; i++) {int x = abs(a[i] - a[i - 1]);if (x >= n || b[x]) {cout << "Not jolly";return 0;}b[x]++;}cout << "Jolly";return 0;
}

T5. 反反复复

Mo \text{Mo} Mo Larry \text{Larry} Larry 发明了一种信息加密方法。他们首先决定好列数,然后将信息(只包含字母)从上往下依次填入各列,并在末尾补充一些随机字母使其成为一个完整的字母矩阵。例如,若信息是 There's no place like home on a snowy night 并且有 5 5 5 列, Mo \text{Mo} Mo 会写成:

t o i o y
h p k n n
e l e a i
r a h s g
e c o n h
s e m o t
n l e w x

注意 Mo \text{Mo} Mo 只会填入字母,且全部是小写形式。在这个例子中, Mo \text{Mo} Mo 用字母 x 填充了信息使之成为一个完整的矩阵,当然他使用任何字母都是可以的。

Mo \text{Mo} Mo 根据这个矩阵重写信息:首先从左到右写下第一行,然后从右到左写下第二行,再从左到右写下第三行 … \dots 以此左右交替地从上到下写下各行字母,形成新的字符串。这样,例子中的信息就被加密为:toioynnkpheleaigshareconhtomesnlewx

你的工作是帮助 Larry \text{Larry} Larry 从加密后的信息中还原出原始信息(包括填充的字母)。

时间限制:1 s
内存限制:64 MB

  • 输入
    第一行包含一个整数(范围 2 2 2 20 20 20),表示使用的列数。
    第二行是一个长度不超过 200 200 200 的字符串。
  • 输出
    一行,即原始信息。
  • 样例输入
    5
    toioynnkpheleaigshareconhtomesnlewx
    
  • 样例输出
    theresnoplacelikehomeonasnowynightx
    

思路分析

此题考查字符串操作,属于入门题。

我们完全可以将这个字符串当成一个二维矩阵来处理,注意好下标变换即可。首先将字符串 s s s 中偶数行的子串进行翻转,然后按列进行输出。

/** Name: T5.cpp* Problem: 反反复复* Author: Teacher Gao.* Date&Time: 2024/11/15 22:21*/#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;int main()
{int n;char s[205];cin >> n >> s;int len = strlen(s);// 翻转偶数行子串for (int i = n; i < len; i += 2*n) {reverse(s + i, s + i + n);}// 按列输出字符for (int i = 0; i < n; i++) {for (int j = i; j < len; j += n) {cout << s[j];}}	return 0;
} 

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

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

相关文章

element ui 走马灯一页展示多个数据实现

element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 主要是对走马灯的数据的操作&#xff0c;先看js处理 let list [{ i: 1, name: 1 },{ i: 2, name: 2 },{ i: 3, name: 3 },{ i: 4, name: 4 },]let newL…

使用MaxKB搭建知识库问答系统并接入个人网站(halo)

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;使用MaxKB搭建知识库问答系统并接入个人网站 前言 从OpenAI推出ChatGPT到现在&#xff0c;大模型已经渗透到各行各业&#xff0c;大模型也逐渐趋于平民化&#xff1b;从最开始对其理解、生成、强大的知识积累的惊叹&…

Linux进阶:软件安装、网络操作、端口、进程等

软件安装 yum 和 apt 均需要root权限 CentOS系统使用&#xff1a; yum [install remove search] [-y] 软件名称 install 安装remove 卸载search 搜索-y&#xff0c;自动确认 Ubuntu系统使用 apt [install remove search] [-y] 软件名称 install 安装remove 卸载search 搜索-y&…

如何解决飞书网页文字无法复制的问题

如何解决网页文字无法复制的问题&#xff1f;特别推荐提词宝防复制文案功能&#xff01; 在日常工作和学习中&#xff0c;我们经常遇到一些网页文字无法复制的情况&#xff0c;无论是因为权限限制还是其他原因&#xff0c;手动输入内容不仅耗时费力&#xff0c;还容易出错。那…

STM32电源管理—实现低功耗

注&#xff1a; 本文是学习野火的指南针开发板过程的学习笔记&#xff0c;可能有误&#xff0c;详细请看B站野火官方配套视频教程&#xff08;这个教程真的讲的很详细&#xff0c;请给官方三连吧&#xff09; 在响应绿色发展的同时&#xff0c;在很多应用场合中都对电子设备的功…

Linux网络:守护进程

Linux网络&#xff1a;守护进程 会话进程组会话终端 守护进程setsiddaemon 在创建一个网络服务后&#xff0c;往往这个服务进程是一直运行的。但是对于大部分进程来说&#xff0c;如果退出终端&#xff0c;这个终端上创建的所有进程都会退出&#xff0c;这就导致进程的生命周期…

基于深度学习的文本信息提取方法研究(pytorch python textcnn框架)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Seatunnel解决Excel中无法将数字类型转换成字符串类型以及源码打包

需求 需要实现将Excel中的数字类型的单元格像数据库中字符串类型的字段中推送 问题原因 Seatunnel在读取字段类型的时候都是使用强转的形式去获取数据的 假如说数据类型不一样的话直接强转就会报错 修改位置 org/apache/seatunnel/api/table/type/SeaTunnelRow.java org…

AntFlow 0.11.0版发布,增加springboot starter模块,一款设计上借鉴钉钉工作流的免费企业级审批流平台

AntFlow 0.11.0版发布,增加springboot starter模块,一款设计上借鉴钉钉工作流的免费企业级审批流平台 传统老牌工作流引擎比如activiti,flowable或者camunda等虽然功能强大&#xff0c;也被企业广泛采用&#xff0c;然后也存着在诸如学习曲线陡峭&#xff0c;上手难度大&#x…

UniAPP快速入门教程(一)

一、下载HBuilder 首先需要下载HBuilder开发工具&#xff0c;下载地址:https://www.dcloud.io/hbuilderx.htmlhttps://www.dcloud.io/hbuilder.html 选择Windows正式版.zip文件下载。下载解压后直接运行解压目录里的HBuilderX.exe就可以启动HBuilder。 UniApp的插件市场网址…

计算机网络 (5)数据通信的基础知识

前言 数据通信是一种以信息处理技术和计算机技术为基础的通信方式&#xff0c;它通过数据通信系统将数据以某种信号方式从一处传送到另一处&#xff0c;为计算机网络的应用和发展提供了技术支持和可靠的通信环境&#xff0c;是现代通信技术的关键部分。 一、数据通信的基本概念…

K8s学习笔记之了解k8s的网络模型

文章目录 docker 网络模型容器与容器之间&#xff0c;容器与宿主机之间如何通信容器访问外部网络外部网络访问容器 k8s 网络模型CNIpod 网络配置流程 k8s 热门网络插件介绍Flannel 来源Calico 来源Cilium 来源 k8s 网络插件的工作模式Flannel 的工作模式Calico 的工作模式BGP 和…

Python 三种方式实现自动化任务

在这篇文章中&#xff0c;我们将介绍一些用Python实现机器人过程自动化的包。机器人流程自动化&#xff08;Robotic process automation&#xff0c;简称RPA&#xff09;是指将鼠标点击和键盘按压自动化的过程&#xff0c;即模拟人类用户的操作。RPA用于各种应用程序&#xff0…

时代变迁对传统机器人等方向课程的巨大撕裂

2020年之后&#xff0c;全面转型新质课程规划&#xff0c;传统课程规划全部转为经验。 农耕-代表性生产关系-封建分配制度主要生产力-人力工业-代表性生产关系-资本分配制度工业分为机械时代&#xff0c;电气时代&#xff0c;信息时代&#xff1b;主要生产力-人力转为人脑&…

流程图图解@RequestBody @RequestPart @RequestParam @ModelAttribute

RequestBody 只能用一次&#xff0c;因为只有一个请求体 #mermaid-svg-8WZfkzl0GPvOiNj3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8WZfkzl0GPvOiNj3 .error-icon{fill:#552222;}#mermaid-svg-8WZfkzl0GPvOiNj…

学习记录:js算法(九十九):冗余连接

文章目录 冗余连接思路一 冗余连接 树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1&#xff5e;n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间&#xff0c;且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数…

ISUP协议视频平台EasyCVR私有化部署视频平台如何实现RTMP推流将大疆无人机的视频画面回传?

在现代视频监控和流媒体技术领域&#xff0c;EasyCVR视频融合云平台以其卓越的性能和灵活性&#xff0c;成为了跨区域、网络化视频监控综合管理的理想选择。作为TSINGSEE青犀视频“云边端”架构体系中的核心组件&#xff0c;私有化部署视频平台EasyCVR不仅能够实现视频数据的集…

【Linux】Linux入门实操——进程管理(重点)

1. 概述 在 LINUX 中&#xff0c;每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。>windows > linux每个进程都可能以两种方式存在的。前台与后台&#xff0c;所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作&#xff0…

Postman之安装及汉化基本使用介绍

Postman之安装及汉化 1.安装及汉化postman2.基本使用介绍2.1.基本功能&#xff1a;2.2.编辑、查看、设置环境、全局、集合变量2.3.复制代码片段2.4.运行集合中的所有请求及引用外部文件进行参数化 1.安装及汉化postman 下载安装包 首先可以到官网下载安装包&#xff0c;需要注…

百度AI人脸检测与对比

1.注册账号 打开网站 https://ai.baidu.com/ &#xff0c;注册百度账号并登录 2.创建应用 3.技术文档 https://ai.baidu.com/ai-doc/FACE/yk37c1u4t 4.Spring Boot简单集成测试 pom.xml 配置&#xff1a; <!--百度AI--> <dependency> <groupId>com.baidu.…