2021 年铜陵市青少年编程大赛
初中组 C/C++ 语言试题
时间: 2021年9月 12日 14:00 ∼18:00
题目名称 字符排序 迷宫 随机排列 春色满园 表达式
题目类型 传统型 传统型 传统型 传统型 传统型
目录 char maze rand yard expr
可执行文件名 char maze rand yard expr
输入文件名 char.in maze.in rand.in yard.in expr.in
输出文件名 char.out maze.out rand.out yard.out expr.out
每个测试点时限 1.0秒
1.0秒
1.0秒
1.0秒
1.0秒
内存限制 256 MB 256 MB 256 MB 256 MB 256 MB
测试点数目 10 10 10 20 10
测试点是否等分 是 是 是 是 是
提交源程序文件名
对于 C++ 语言
char.cpp maze.cpp rand.cpp yard.cpp expr.cpp
对于 C 语言
char.c maze.c rand.c yard.c expr.c
编译选项
对于 C++ 语言
-lm
对于 C 语言
-lm
注意事项(请仔细阅读) 1.文件名(程序名和输入输出文件名)必须使用英文小写。
2. C/C++ 语言中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必
须是 0。
3. 选手需要先以自己的考号建立一个文件夹,再以每道题目的目录名称建立一个子文
件夹,将提交的程序代码文件放置在对应题目的子文件夹中。 4.因违反以上三点而出现的错误或问题,申诉时一律不予受理。
5. 若无特殊说明,结果的比较方式为全文比较(过滤行末空格及文末回车)。
6. 程序可使用的栈内存空间限制与题目的内存限制一致。
7. 只提供 Windows 格式附加样例文件。
8. 评测在 Windows 下进行。
9. 并不保证题目按照难度排序 。
2021
年铜陵市青少年编程大赛 初中组 C/C++语言 字符排序(char)
字符排序(char )
【题目描述】
小y有个可爱的弟弟,他正在用英文卡片教弟弟认识 26个大小写英文字母,学习完
后弟弟总是把卡片弄乱,小 y是个有条理的小朋友,他最后会把所有的卡片按照字母 A<
a < B< b< …… <Y< y< Z< z的顺序排列整理好。请你编写程序输出排序好的卡片
字母顺序。
【输入格式】
从文件 char.in 中读入数据。
共一行,包含一个正整数 x和一个非负整数 d。
【输出格式】
输出到文件 char.out中。
一行字符串,表示按要求排列好的卡片字母排序。
【样例 1输入】
1 7
2 AldPDjL
【样例 1输出】
1 ADdjLlP
【数据范围】
对于 10% 的数据,只有大写字母卡片。
对于另外 10% 的数据,只有小写字母卡片。
对于 100%的数据,字符串出现大小写字母, 1≤ n≤ 1000 。
第2页 共
10 页
2021
年铜陵市青少年编程大赛 初中组 C/C++语言 迷宫游戏(maze)
迷宫游戏(maze )
【题目描述】
小y在玩走迷宫游戏,在一个 m×n的迷宫中存在墙与空地,空地能走,墙不能走,
只能向下或向右走,小 y想知道对于给定的迷宫地图,从 (1,1) 走到 (m, n )有几种走法。
【输入格式】
从文件 maze.in 中读入数据。
第一行两个数字 m, n,用空格隔开。
接下来 m行每行 n个符号, @代表空地, #代表墙。
【输出格式】
输出到文件 maze.out中。
一个数字,代表走法数。
【样例 1输入】
1 3 3
2 @ ##
3 @@@
4 # @@
【样例 1输出】
1 2
【数据范围】
对于 10% 的数据,迷宫内没有墙。
对于 100%的数据,满足 1≤ m, n ≤10,保证 (1,1) 与 (m, n )是空地。
第3页 共
10 页
2021
年铜陵市青少年编程大赛 初中组 C/C++语言 随机排列(rand)
随机排列(rand )
【题目描述】
提起计算机,人们总能想起那无穷无尽的 010010100· · ·,而 0< 1也是大家公认的常
识。 Youyou 手头有一个 0∼ 2k
− 1的排列 a,每时每刻都按照 从小到大的顺序进行排列。
可以发现,在通常意义下,肯定是 0,1 ,2 ,· · · ,2 k
− 1这样顺次排列的。 Youyou觉得,
一直保持有序是非常无趣的,他想想一些办法把这个排列随机打乱。 Youyou 是一个与众不同的人,他疲倦了 0< 1的刻板印象,转而思考,如果在二进制
的世界中 1< 0,会发生什么呢?
于是对于 0∼ k− 1这 k个二进制位, Youyou确定了一个数组 r
i,如果
r
i = 0
则代
表这一位 0< 1,否则代表这一位 1< 0。
现在, Youyou 给了你m次操作,每次给定两个数 p, q,表示先将 r
p 取反(原来为
0
则改为 1,原来为 1则改为 0),然后查询这个排列中第 q个数字是多少。
排列从 0开始编号,即第一个数字是 a
0,最后一个数字是
a
2k
− 1。
位按照从低到高依次编号,最低位为 0,最高位为 k− 1。
【输入格式】
从文件 rand.in 中读入数据。
第一行两个正整数 k, m,表示排列长度和操作个数。
接下来 m行,每行两个非负整数 p, q,表示一次操作。
【输出格式】
输出到文件 rand.out中。
共 m行,每行包含一个非负整数,表示答案。数字以十进制输出。
【样例 1输入】
1 2 4
2 0 1
3 1 1
4 0 3
5 1 3
【样例 1输出】
第4页 共
10 页
2021
年铜陵市青少年编程大赛 初中组 C/C++语言 随机排列(rand)
1 0
2 2
3 1
4 3
【样例 1解释】
第一次操作后, r= {1,0 } ,因为 01
(2) <
00
(2) <
11
(2) <
10
(2),所以排列顺序是
[1,0 ,3 ,2] ,
a 1 = 0
。
第二次操作后,
2021年铜陵市青少年编程大赛初中组 C/C++ 语言试题senior,2021年铜陵市青少年编程大赛初中组C/C++语言真题