2025第十六届蓝桥杯大赛青少组省赛C++真题(初级组和中级组)
·
2025第十六届蓝桥杯大赛青少组省赛C++真题(初级组和中级组)
选择题:第1题
运行以下程序,输出的结果是( )。
int func(int y) {
y -= 5;
cout << "x";
return 0;
}
int main() {
int x = 10, y = 5;
if (x > y || func(y))
cout << y;
return 0;
}
- A X0
- B X5
- C 5
- D 0
选择题:第2题
运行以下程序,输出的结果是( )。
int i = 1, t = 0;
while (i * i < 30) {
t += i;
i += 2;
}
cout << t;
- A 3
- B 4
- C 9
- D 16
选择题:第3题
运行语句 cout << (char)('F' + 4); 的结果是( )。
- A I
- B j
- C K
- D J
选择题:第4题
下列选择中,优先级最高的是( )。
- A +
- B -
- C *
- D =
选择题:第5题
关于 C++ 中的 new 和 delete 关键字,以下说法错误的是( )。
- A 使用
new int[10]分配的数组内存必须使用delete[]释放 - B
int *p = new int;分配的整型内存默认会被初始化为 0 - C 对空指针
nullptr使用delete是安全的,不会引发错误 - D
new在内存分配失败时默认输出std::bad_alloc异常,而非返回空指针
编程题第1题: 庆典队列
题目描述:
有 n 名志愿者参加庆典活动,需排成矩形队列满足:
- 共
A行(输入给定的行数); - 每行志愿者人数相同;
- 可不安排所有志愿者(允许部分不参与排列)。
目标:计算每行最多能安排的志愿者人数。
输入要求:
- 两个整数
n和A(空格隔开),满足:- ( 2 ≤ n ≤ 500 2 \leq n \leq 500 2≤n≤500)(志愿者总数)
- ( 2 ≤ A ≤ n 2 \leq A \leq n 2≤A≤n)(行数)
输出要求:
- 每行最多能安排的志愿者人数。
示例:
输入:50 11
输出:4
解释:
- 每行 4 人:( 4 × 11 = 44 ≤ 50 4 \times 11 = 44 \leq 50 4×11=44≤50)(可行)
- 每行 5 人:( 5 × 11 = 55 > 50 5 \times 11 = 55 > 50 5×11=55>50)(不可行)
编程题第2题: 茶具套装组合
题目描述:
给定茶壶、盖碗、茶漏、茶杯的库存数量,计算最多能组成的完整茶具套装数量。
套装要求:
- 1 个茶壶
- 1 个盖碗
- 1 个茶漏
- 4 个茶杯
输入要求:
- 4 个整数(范围 (
0
≤
整数
≤
100
0 \leq \text{整数} \leq 100
0≤整数≤100)),空格隔开,依次表示:
- 茶壶数量
- 盖碗数量
- 茶漏数量
- 茶杯数量
输出要求:
- 最多能组成的完整套装数量。
示例:
输入:3 4 2 13
输出:2
解释:
- 每套需要4个茶杯,因此茶杯最多支持 13 ÷ 4 = 3 13 \div 4 = 3 13÷4=3 套(取整后为3套)
- 但茶漏仅2个,限制为 2 套
- 最终以最小限制为准,输出 2 套
编程题第3题: 平衡奇偶位置的字符交换
题目描述:
给定仅含 'A' 和 'B' 的字符串 s,每次可交换相邻字符。要求通过最少交换次数满足:
- 奇数位置(从 1 开始)的
'A'数量 等于 偶数位置的'A'数量。
若无法满足,返回-1。
输入要求:
- 字符串
s( 2 ≤ ∣ s ∣ ≤ 1 0 5 2 \leq |s| \leq 10^5 2≤∣s∣≤105),仅含'A'和'B'。
输出要求:
- 最少交换次数;若无法满足,输出
-1。
示例:
输入:"AABABA"
输出:1
解释:
- 交换位置 2 和 3 后:奇数位置
'A'= 2,偶数位置'A'= 2。
编程题第4题: 矩阵圈层交错旋转
题目描述:
对 (n
×
\times
× n) 矩阵的每一圈层进行顺时针/逆时针交替旋转:
- 圈层定义:
- 从外到内逐层编号(最外层为第 1 层)。
- 若 (n) 为奇数,中心元素不旋转。
- 旋转方向:
- 奇数层:顺时针旋转 90°
- 偶数层:逆时针旋转 90°
输入要求:
- 第一行:整数 (n)( 2 ≤ n ≤ 100 2 \leq n \leq 100 2≤n≤100)。
- 接下来 (n) 行:每行 (n) 个整数( − 1000 ≤ 整数 ≤ 1000 -1000 \leq \text{整数} \leq 1000 −1000≤整数≤1000)。
输出要求:
- 输出旋转后的矩阵(每行整数空格隔开)。
示例:
输入:
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出:
13 9 5 1
14 7 11 2
15 6 10 3
16 12 8 4
解释:
- 第 1 层(最外层)顺时针旋转 90°。
- 第 2 层(内层)逆时针旋转 90°。
编程题第5题: 环形取硬币游戏
题目描述:
Jerry 和 Tom 在环形盒子(共 (n) 个)中轮流取硬币:
- Jerry 先手,从盒子 1 开始取至少 1 枚。
- 限制:
- 若上一玩家取了盒子 i ,当前玩家必须取盒子 i+1 (盒子 n 后接盒子 1)。
- 失败条件:轮到玩家时需取的盒子为空。
输入要求:
- 第一行:整数 T ( 1 ≤ T ≤ 100 1 \leq T \leq 100 1≤T≤100,测试组数)。
- 每组数据:
- 第一行:整数 (n)(盒子数量)。
- 第二行:n 个整数 a i a_i ai(每个盒子的硬币数)。
输出要求:
- T 行,每行为
"Jerry"或"Tom"(获胜者)。
示例:
输入:
2
1
10
2
30 50
输出:
Jerry
Tom
解释:
- (n=1):Jerry 取完硬币,Tom 失败。
- (n=2):Tom 通过最优策略获胜。
编程题第6题: 魔术扑克牌排列 (中级组多一题)
题目描述:
混合 (n) 张红牌和 (n) 张蓝牌后叠放。嘉宾从顶部连续取任意张牌(至少 1 张,最多 (2n) 张),需满足:
- 任意取牌方案中,红牌数量 ≥ 蓝牌数量。
求满足条件的排列总数。
输入要求:
- 整数 n( 1 ≤ n ≤ 100 1 \leq n \leq 100 1≤n≤100)。
输出要求:
- 输出一个整数,表示满足条件的排列总数。
示例:
输入:n = 3
输出:5
解释:
- 满足条件的 5 种排列(
R红牌,B蓝牌):
i.R R B R B B
ii.R B R B R B
iii.R B R B B B
iv.R R B B B B
v.R R B B R B
文末福利: csp信奥赛c++复赛集训课(12大高频考点专题集训)

课程直通链接:
更多推荐


所有评论(0)