image

编辑人: 桃花下浅酌

calendar2025-12-09

message1

visits455

2022年09月C语言二级答案及解析

一、编程题

1、1.统计误差范围内的数
统计一个整数序列中与指定数字m误差范围小于等于X的数的个数。
时间限制:5000
内存限制:65536
输入
输入包含三行: 第一行为N,表示整数序列的长度(N <= 100); 第二行为N个整数,整数之间以一个空格分开; 第三行包含2个整数,为指定的整数m,误差范围X。
输出
输出为N个数中与指定数字m误差范围小于等于X的数的个数。
样例输入
```
5
1 2 3 4 5
3 1
```
样例输出
```
3
```
提示
样例中2,3,4都满足条件,故答案为3

参考答案:

解析:【喵呜刷题小喵解析】本题是一道编程题,要求统计一个整数序列中与指定数字m误差范围小于等于X的数的个数。首先,从输入中读取三个整数N、m和x,其中N表示整数序列的长度,m和x是题目中指定的整数。然后,从输入中读取N个整数,将它们存储在一个列表中。接下来,遍历这个列表,对于每个数num,如果它的绝对值与m的差小于等于x,则将计数器count加1。最后,输出计数器count的值,即为满足条件的数的个数。注意,本题的时间限制和内存限制都较小,因此算法的时间复杂度和空间复杂度都需要尽可能小。在这个例子中,我们使用了简单的遍历算法,时间复杂度为O(N),空间复杂度为O(1)。

2、2.全在其中
你设计了一个新的加密技术,可以用一种聪明的方式在一个字符串的字符间插入随机的字符串从而对信息进行编码。由于专利问题,我们将不会详细讨论如何在原有信息中产生和插入字符串。不过,为了验证你的方法,有必要写一个程序来验证原来的信息是否全在最后的字符串之中。
给定两个字符串s和t,你需要判断s是否是t的“子列”。也就是说,如果你去掉t中的某些字符,剩下字符将连接而成为s。
时间限制:1000
内存限制:65536
输入
输入包括多个测试样例。每一个都是由空格分隔的由字母数字ASCII字符组成的两个特定的字符串s和t。s和t的长度不超过100000。
输出
对于每个测试样例,如果s是t的“子列”,则输出”Yes”,否则输出”No”
样例输入
```
sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter
```
样例输出
```
Yes
No
Yes
No
```

参考答案:

解析:【喵呜刷题小喵解析】本题要求判断字符串s是否是字符串t的子列。子列是指通过删除一些字符但不改变其余字符的相对位置,s可以由t得到。判断字符串s是否是字符串t的子列,可以通过双指针的方法来实现。定义两个指针i和j,初始值都为0。遍历字符串t,当s[i] == t[j]时,说明s的第i个字符和t的第j个字符相等,此时将i加1,表示s的第i个字符已经匹配成功。无论是否匹配成功,都将j加1,表示继续遍历t的下一个字符。当遍历完s后,如果i == len(s),说明s是t的子列,返回True;否则,返回False。本题中,输入数据来自文件input.txt,每一行包含两个字符串s和t,需要判断s是否是t的子列。因此,可以使用循环读取文件,对于每一行数据,调用is_subsequence函数进行判断,并输出相应的结果。注意,本题的时间限制和内存限制较小,需要优化算法,避免超时和内存溢出。本题中,使用双指针的方法,时间复杂度为O(n+m),其中n和m分别为字符串s和t的长度,满足时间限制和内存限制的要求。

3、3.Lab杯
“Lab杯”乒乓球赛就要在PKU的实验室之间举行了。人工智能实验室的学生都是乒乓球的狂热分子,都强烈希望代表实验室去比赛。但是有余名额限制,他们之中只能由一个人被选作代表。
为了让选择的过程公平,他们决定打一次单循环赛,每一对学生之间都打一场五局三胜的比赛。赢得最多比赛的人就将代表实验室去比赛。现在Ava手里有一份表,表里面记录了每一场比赛的比分。她应该让谁去比赛?
时间限制:5000
内存限制:131072
输入
输入包含一组测试数据。第一行包含*n*(2 ≤ *n* ≤ 100),实验室里学生的数目。接下来给出一个*n* × *n*矩阵*A*。矩阵的每一个元素都是0、1、2、3中的一个。第*i*行第*j*列的元素*aij*是第*i*个学生在和第*j*个学生的比赛中赢的局数。*aij*和*aji*(*i* ≠ *j*)正好有一个是3,另外一个小于3。矩阵的所有对角线元素都是0。
输出
输出赢了最多比赛的学生的编号。如果有平分,选择编号最小的。
样例输入
```
4
0 0 3 2
3 0 3 1
2 2 0 2
3 3 3 0
```
样例输出
```
4
```

参考答案:

解析:【喵呜刷题小喵解析】本题是一道编程题,要求根据输入的比赛结果,找出赢得最多比赛的学生编号。首先,我们需要读取输入数据,包括学生的数量和比赛结果矩阵。比赛结果矩阵是一个二维数组,其中每个元素表示两个学生之间的比赛结果,0表示未进行比赛,1、2、3分别表示赢得1局、2局、3局比赛。然后,我们遍历每个学生,计算他们的总得分,即他们赢得的比赛局数之和。如果有多个学生得分相同,我们选择编号最小的学生作为获胜者。最后,我们输出获胜学生的编号。本题需要注意的是,学生的编号是从1开始的,而不是从0开始,所以在输出时需要将编号加1。代码的具体实现可以参考上面的示例代码,通过输入、计算和输出三个步骤来解决问题。

4、4.有趣的跳跃
一个长度为n(n>0)的序列中存在“有趣的跳跃”当且仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。例如,1 4 2 3存在“有趣的跳跃”,因为差的绝对值分别为3,2,1。当然,任何只包含单个元素的序列一定存在“有趣的跳跃”。你需要写一个程序判定给定序列是否存在“有趣的跳跃”。
时间限制:1000
内存限制:65536
输入
一行,第一个数是n(0 < n < 3000),为序列长度,接下来有n个整数,依次为序列中各元素,各元素的绝对值均不超过1,000,000,000。
输出
一行,若该序列存在“有趣的跳跃”,输出"Jolly",否则输出"Not jolly"。
样例输入
```
4 1 4 2 3
```
样例输出
```
Jolly
```

参考答案:

解析:【喵呜刷题小喵解析】这个编程题目要求判断一个序列是否存在“有趣的跳跃”。根据题目描述,“有趣的跳跃”是指序列中相邻元素的差的绝对值经过排序后正好是从1到(n-1)。首先,我们需要读取输入,包括序列的长度n和序列中的元素。然后,我们可以计算相邻元素的差的绝对值,并将它们存储在列表diff中。接下来,我们对列表diff进行排序。然后,我们遍历排序后的列表diff,检查每个元素是否等于其索引加1。如果任何一个元素不等于其索引加1,那么这个序列就不存在“有趣的跳跃”,我们返回"Not jolly"。如果所有元素都等于其索引加1,那么这个序列就存在“有趣的跳跃”,我们返回"Jolly"。最后,我们打印出结果。

5、5.反反复复
Mo和Larry发明了一种信息加密方法。他们首先决定好列数,然后将信息(只包含字母)从上往下依次填入各列,并在末尾补充一些随机字母使其成为一个完整的字母矩阵。例如,若信息是“There's no place like home on a snowy night”并且有5列,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只会填入字母,且全部是小写形式。在这个例子中,Mo用字母“x”填充了信息使之成为一个完整的矩阵,当然他使用任何字母都是可以的。
Mo根据这个矩阵重写信息:首先从左到右写下第一行,然后从右到左写下第二行,再从左到右写下第三行……以此左右交替地从上到下写下各行字母,形成新的字符串。这样,例子中的信息就被加密为:toioynnkpheleaigshareconhtomesnlewx。
你的工作是帮助Larry从加密后的信息中还原出原始信息(包括填充的字母)。
时间限制:1000
内存限制:65536
输入
第一行包含一个整数(范围2到20),表示使用的列数。 第二行是一个长度不超过200的字符串。
输出
一行,即原始信息。
样例输入
```
5
toioynnkpheleaigshareconhtomesnlewx
```
样例输出
```
theresnoplacelikehomeonasnowynightx
```

参考答案:

解析:【喵呜刷题小喵解析】:根据题目描述,Mo和Larry的加密方法是这样的:首先决定好列数,然后将信息(只包含字母)从上往下依次填入各列,并在末尾补充一些随机字母使其成为一个完整的字母矩阵。然后,按照特定的规则将矩阵中的字母重新排列成字符串。解密的过程就是按照加密的逆过程进行。首先,我们需要确定原始信息的长度。由于加密过程中,每两行对应原始信息的一行,所以原始信息的长度是加密后字符串长度的1/2n。然后,我们按照加密的规则,将加密后的字符串重新排列成矩阵。具体地,如果当前位置在矩阵的前n行,则取加密后字符串的对应位置上的字母;如果当前位置在矩阵的后n行,则取加密后字符串的倒数第(n+当前位置-1)个字母。最后,我们需要将矩阵中的字母按照行优先的顺序排列成字符串,即为解密后的原始信息。在排列的过程中,如果遇到字母"x",则跳过不处理。所以,我们可以按照上述思路编写Python代码实现解密过程。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2022年09月C语言二级答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share