2025年第十六届蓝桥杯青少组省赛 C++编程 初级组真题
剩余时间 --:--:--
单选题 共 5 题
1.
下列C++运算符中,优先级最高的是(  )。
2.
运行c++语句 cout << (char)('F'+4);的结果是(  )
3.

运行以下c++程序,输出的结果是(  )。

int i =1, t =0;
while(i * i <30){
    t +=1;
    i +=2;
}
cout << t;
4.

运行以下c++程序,输出的结果是(  )。

intfunc(int y){ 
    y -=5;
    cout <<"x";
    return0;
}
    intmain(){
    int x =10, y =5;
    if(x > y ||func(y)) 
        cout << y;
    return0;
}
5.
关于C++中的new和delete关键字,以下说法错误的是(  )。
问答题 共 5 题
1.

庆典队列

题目描述:

有n名志愿者参加了一场庆典活动,我们希望将这些人排成一个矩形队列,要求队列共有A行,且每一行的人数都要相等。请计算每一行最多有多少名志愿者。


注意:不一定要将所有的志愿者都安排进队列。例如:n=50,A=11,表示要将50名志愿者排成一个11行的矩形队列,那么每一行最多能安排4名志愿者。


输入描述:

输入两个整数n和A(2≤n≤500,2≤A≤n),分别表示志愿者人数以及矩形队列的行数,整数之间以一个空格隔开。


输出描述:

输出一个整数,表示矩形队列的每一行最多有多少名志愿者。


样例输入:

50  11


样例输出:

4

2.

茶具套装

题目描述:

佳佳在一家茶具商店工作,有客户要订购一些茶具套装,一套完整的茶具套装包含1个茶壶、1个盖碗、1个茶漏以及4个茶杯。现在已知茶壶、盖碗、茶漏和茶杯各自的数量,需要编写一个程序来计算最多能够组成多少套完整的茶具套装。


例如:茶壶、盖碗、茶漏和茶杯各自的数量分别是3,4,2,13。根据这些茶具的数量,佳佳最多能组成2套完整的茶具套装。


输入描述:

输入4个整数(0≤整数≤100),分别表示茶壶、盖碗、茶漏和茶杯各自的数量,整数之间以一个空格隔开。


输出描述:

输出一个整数,表示最多能组成完整的茶具套装数量。


样例输入:

3  4  2  13


样例输出:

2

3.

交换字符

题目描述:

给定一个字符串S,其中仅包含字符"A"和字符"B"。你每次可以选择交换两个位置相邻的字符。请计算如果要使奇数位置上(位置从1开始)字符"A"的数量等于偶数位置上字符"A"的数量,最少需要进行多少次交换操作。


例如:S="AABABA",从左往右数,奇数位置上字符"A"的数量为1(位置1),偶数位置上"A"的数量为3(位置2、4、6).可将位置2的字符"A"和位置3的字符"B"交换。


交换后,奇数位置上字符"A"的数量和偶数位置上字符"A"的数量都为2,满足题目要求,故最少需要交换一次。


输入描述:

输入一个字符串S(2≤S的长度≤105),其中仅包含字符"A"和字符"B"。


输出描述:

输出一个整数,表示满足题目要求的最少交换次数,如果无论怎么交换都无法满足题目要求,则输出-1。


样例输入:

AABABA


样例输出:

1

4.

矩阵圈层90度交错旋转

题目描述:

给定一个n x n的二维整数矩阵,你需要对这个矩阵的每一“圈层”的元素进行交错旋转,规则如下:

圈层的定义:

· 矩阵从最外层开始,向内逐层定义“圈层”。最外层的元素构成第一圈层,移除最外层后剩余矩阵的最外层元素构成第二圈层,以此类推。

· 如果n为奇数,最中心的一个元素属于最内层的圈层,且旋转后其值不改变。


旋转方向:

· 最外层(第一圈层)的元素按照顺时针方向整体旋转90度。

· 次外层(第二圈层)的元素按照逆时针方向整体旋转90度。

· 再往内一层(第三圈层)的元素按照顺时针方向整体旋转90度。

以此类推,圈层的旋转方向在顺时针和逆时针之间交替进行。


旋转范围:

每一圈层的旋转仅限于该圈层内的元素。

例:一个6x6矩阵的圈层和旋转方向定义如下

例:当n=4,原始矩阵经过圈层交错旋转后结果如下

输入描述:

第一行输入一个正整数n(2≤n≤100),表示矩阵的行数和列数;接下来n行,每行输入n个整数(-1000≤整数≤1000),整数之间以一个空格隔开。


输出描述:

输出n行,每行n个整数,整数之间以一个空格隔开,表示经过圈层交错旋转90度变换后的矩阵。


样例输入:

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

5.

硬币游戏

题目描述:

Jerry和Tom正在进行一局游戏。他们准备了n个盒子,编号为1到n,其中i号盒子装有ai枚硬币。他们将这n个盒子围成一圈。游戏规则如下:


1)Jerry和Tom轮流从某一个盒子中取走至少一枚硬币,Jerry先手从1号盒子开始取;

2)如果前一个玩家取的是i号盒子中的硬币,那么当前玩家必须从i+1号盒子中取硬币。特别地,如果前一个玩家取的是n号盒子中的硬币,那么当前玩家必须从1号盒子中取硬币。

3)如果轮到某位玩家时对应盒子中没有硬币,则该玩家失败。


假设Jerry和Tom都采取最优策略,请问谁会赢?


输入描述:

本题每个测试点包含多组测试数据,格式如下:

第一行输入一个整数T(1≤T≤100),表示数据组数;

对于每组测试数据,第一行输入一个整数n(1≤n≤1000),表示盒子的数量;

第二行输入n个整数ai(1≤ai≤109),分别表示1号到n号盒子中的硬币数量,整数之间以一个空格隔开。


输出描述:

输出T行,每行输出一个字符串,对于第i组测试数据,如果Jerry能赢,则输出"Jerry",否则输出"Tom"。


样例输入:

2

1

10

2

30  50


样例输出:

Jerry

Tom

C++ 编辑器
输入
输出