news 2026/9/1 11:56:41

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2022 年 6 月青少年软编等考 C 语言二级真题解析

目录

  • T1. 多余的数
    • 思路分析
  • T2. 小白鼠再排队
    • 思路分析
  • T3. 打字员
    • 思路分析
  • T4. 最好的草
    • 思路分析
  • T5. 字符串中最长的连续出现的字符
    • 思路分析

T1. 多余的数

题目链接:SOJ D1171

A AA同学在完成一个数学题:求给定的10 1010个整数的和。小A AA同学在求完之后发现和参考答案对不上,检查后发现在求和过程中多计算了一个数,其他过程没有问题。现给出小A AA计算用的11 1111个数,以及正确的参考答案,请算出小A AA同学多计算的那一个数。

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

  • 输入
    第一行11 1111个正整数,每个数小于等于1000000 10000001000000
    第二行一个整数,表示参考答案。
  • 输出
    一个整数,表示多计算的那一个数。
  • 样例输入
    2 4 6 8 1 3 5 7 9 5 11 54
  • 样例输出
    7
  • 提示
    样例中原有的10 1010个数为2 4 6 8 1 3 5 9 5 11 2\ 4\ 6\ 8\ 1\ 3\ 5\ 9\ 5\ 1124681359511,和为54 5454,多余的数为7 77

思路分析

此题考查循环结构,属于入门题。

先求出11 1111个元素的和,然后减去正确结果即可。

/* * Name: T1.cpp * Problem: 多余的数 * Author: Teacher Gao. * Date&Time: 2024/11/14 19:10 */#include<iostream>usingnamespacestd;intmain(){intsum=0,x,ans;for(inti=1;i<=11;i++){cin>>x;sum+=x;}cin>>ans;cout<<sum-ans;return0;}

T2. 小白鼠再排队

题目链接:SOJ D1172

n nn只小白鼠(1 < n < 100 1 < n < 1001<n<100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用redblue等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。

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

  • 输入
    输入第一行为一个整数n nn,表示小白鼠的数目。
    下面有n nn行,每行是一只白鼠的信息。第一个为正整数,表示白鼠的重量,不超过整型范围;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10 1010个字符。
    注意:白鼠的重量各不相同。
  • 输出
    按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。
  • 样例输入
    3 30 red 50 blue 40 green
  • 样例输出
    red green blue

思路分析

此题考查排序算法,属于入门题。

由于数据量较小,可以采用任意时间复杂度为O ( n 2 ) O(n^2)O(n2)的算法,更好的方式是采用结构体排序,具体参考示例代码

/* * Name: T2.cpp * Problem: 小白鼠再排队 * Author: Teacher Gao. * Date&Time: 2024/11/14 19:06 */#include<iostream>#include<algorithm>usingnamespacestd;structret{intweight;string hat;}a[105];boolcmp(ret a,ret b){returna.weight<b.weight;}intmain(){intn;cin>>n;for(inti=1;i<=n;i++){cin>>a[i].weight>>a[i].hat;}sort(a+1,a+n+1,cmp);for(inti=1;i<=n;i++){cout<<a[i].hat<<endl;}return0;}

T3. 打字员

题目链接:SOJ D1173

有一个打字员,他打字的时候有个习惯,从来不用S h i f t \tt{Shift}Shift来切换大小写,只用C a p s L o c k \tt{Caps Lock}CapsLock。现在给他一个地铁站的名字,你需要写一个程序来告诉他,他需要敲击多少下键盘才能打出这个地铁站名。

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

  • 输入
    第一行输入一个数字n nnn < 1000 n<1000n<1000),表示共有多少个需要处理的车站名。
    从第2 22到第n + 1 n+1n+1行是这n nn个车站名。车站名由英文字母构成,名字的长度不会超过100 100100个字符。已知开始时键盘是输入小写字母的状态。
  • 输出
    这个打字员敲击键盘的次数。
  • 样例输入
    5 BeiJingDaXueDongMen AAAaaaBBBbbbABAB AmericanRAILWAY AaAaAa DFjfkdaB
  • 样例输出
    31 21 18 12 11

思路分析

此题考查字符串遍历,难度入门。

首先设置一个标记变量,表示键盘的大小写状态,初始为false,表示小写。之后依次遍历每一个字母即可,若需要切换大小写,则进行切换,并将按键操作次数加2 22,否则加1 11

/* * Name: T3.cpp * Problem: 打字员 * Author: Teacher Gao. * Date&Time: 2024/11/14 19:13 */#include<iostream>#include<string>usingnamespacestd;intmain(){intn;cin>>n;while(n--){string s;cin>>s;inttot=0;boolflag=false;for(inti=0;i<s.size();i++){if('A'<=s[i]&&s[i]<='Z'&&!flag){flag=!flag;tot+=2;}elseif('a'<=s[i]&&s[i]<='z'&&flag){flag=!flag;tot+=2;}else{tot++;}}cout<<tot<<endl;}return0;}

T4. 最好的草

题目链接:SOJ D1174

奶牛B e s s i e \tt{Bessie}Bessie计划好好享受柔软的春季新草。新草分布在R RRC CC列的牧场里。它想计算一下牧场中的草丛数量。

在牧场地图中,每个草丛要么是单个#,要么是有公共边的相邻两个#。给定牧场地图,计算有多少个草丛。

例如,考虑如下5 556 66列的牧场地图

.#.... ..#... ..#..# ...##. .#....

这个牧场有5 55个草丛:一个在第一行,一个在第二列横跨了二、三行,一个在第三行,一个在第四行横跨了四、五列,最后一个在第五行。

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

  • 输入
    第一行包含两个整数R RRC CC,中间用单个空格隔开。
    接下来R RR行,每行C CC个字符,描述牧场地图。字符只有#.两种。1 ≤ R , C ≤ 100 1 \le R, C \le 1001R,C100
  • 输出
    输出一个整数,表示草丛数。
  • 样例输入
    5 6 .#.... ..#... ..#..# ...##. .#....
  • 样例输出
    5

思路分析

此题考查二维数组的基本操作,属于入门题。

与 2021 年 12 月二级 T4 类似,难度更低,按照题目意思进行模拟即可。当检测到某一个位置是草丛的时候,我们应该要检测周围四个方向是否还有相邻草丛,将它们算作一个草丛。事实上我们会从左向右,自上而下进行检测,因此只需要检测当前位置的右侧与下方是否有相邻草丛即可,若有则将其标记为已统计。需要注意的是,根据题目描述,草丛大小为1 112 22,因此右侧和下方的草丛只能选择一个进行标记,方便起见,我们优先选择右侧进行标记,若右侧已经标记过,则选择下方进行标记。更直接的方式是把与当前位置进行配对位置的草 “拔掉”,就是把相应的'.'修改为'#',最后输出'#'的数量即可。

/* * Name: T4.cpp * Problem: 最好的草 * Author: Teacher Gao. * Date&Time: 2026/08/31 17:03 */#include<iostream>usingnamespacestd;chara[105][105];intn,m;intmain(){cin>>n>>m;for(inti=1;i<=n;++i){for(intj=1;j<=m;++j){cin>>a[i][j];}}inttot=0;for(inti=1;i<=n;i++){for(intj=1;j<=m;j++){if(a[i][j]=='#'){tot++;if(j+1<=m&&a[i][j+1]=='#')a[i][j+1]='.';elseif(i+1<=n&&a[i+1][j]=='#')a[i+1][j]='.';}}}cout<<tot;return0;}

T5. 字符串中最长的连续出现的字符

题目链接:SOJ D1175

求一个字符串中最长的连续出现的字符,输出该字符及其出现次数。字符串中无空白字符(空格、回车和tab \text{tab}tab),如果这样的字符不止一个,则输出出现最早的字符。

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

  • 输入
    一行,一个不包含空白字符的字符串,字符串长度小于200 200200
  • 输出
    一行,输出最长的连续出现的字符及其最长的连续出现次数,中间以一个空格分开。
  • 样例输入
    aaaaadbbbbbcccccccdddddddddd
  • 样例输出
    d 10

思路分析

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

按照题目要求进行每一个字符连续出现次数的统计即可,具体来说,设置一个临时变量t tt表示当前正在统计的字符,若字符s [ i ] = t s[i] = ts[i]=t,则t tt的出现次数累加1 11,否则检测t tt是否是出现次数最多的字符,之后将t tt更新为s [ i ] s[i]s[i],并重新统计t tt出现的次数。为了能够让最后一个字符也参与比较,我们给s ss后面拼接一个空白符。

/* * Name: T5.cpp * Problem: 字符串中最长的连续出现的字符 * Author: Teacher Gao. * Date&Time: 2024/11/14 19:48 */#include<iostream>#include<string>usingnamespacestd;intmain(){string s;cin>>s;s+=' ';chart=' ',ans_ch=' ';inttot=0,ans_sum=0;for(inti=0;i<s.size();i++){if(s[i]==t){tot++;}else{if(tot>ans_sum){ans_sum=tot;ans_ch=t;}tot=1;t=s[i];}}cout<<ans_ch<<" "<<ans_sum;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 11:53:39

香橙派5安装Windows ARM完整指南:从UEFI固件到系统盘

简介&#xff1a;面向香橙派5开发板安装Windows-ARM系统场景的配套文件包&#xff0c;适合有一定ARM架构经验、愿意折腾非官方系统安装的嵌入式开发者或技术爱好者。ARM版Windows针对低功耗便携设备设计&#xff0c;与常见x86版本在驱动模型和启动方式上差异明显&#xff0c;因…

作者头像 李华
网站建设 2026/9/1 11:52:26

Nashorn引擎:JVM上JavaScript性能优化的实战与启示

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/1 11:52:21

Podiom:为本地AI编程助手构建持久会话与任务调度层

做了很久本地 Claude Code / Codex CLI 的开发流&#xff0c;最头疼的问题其实不是模型回答得好不好&#xff0c;而是会话太容易断&#xff1a;终端一关&#xff0c;上下文没了&#xff1b;想每天早上定时整理一次代码仓库&#xff0c;得自己写脚本去调 CLI&#xff1b;做一段时…

作者头像 李华
网站建设 2026/9/1 11:51:48

Zotero AI插件AI-Butler:大模型驱动的文献精读与笔记生成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/1 11:49:40

Mac原生运行Switch游戏新选择:Asterisk模拟器实测指南

先聊一个很多 Mac 用户都关心的问题&#xff1a;Mac 到底能不能流畅跑 Switch 游戏&#xff1f;过去两三年&#xff0c;大家想在 Mac 上玩 Switch 游戏&#xff0c;基本只有两个选择&#xff1a;一是用 Ryujinx 或 Yuzu 的早期版本通过 Rosetta 转译运行&#xff0c;兼容性不稳…

作者头像 李华
网站建设 2026/9/1 11:49:18

linux驱动学习(九)之中断

一、Linux 中断 API 函数 1、中断号 每个中断都有一个中断号&#xff0c;通过中断号即可区分不同的中断&#xff0c;有的资料也把中断号叫做中断线。在 Linux 内核中使用一个 int 变量表示中断号。 2、request_irq 函数 在 Linux 内核中要想使用某个中断是需要申请的&#…

作者头像 李华