万卷网> 蓝桥竞赛 >蓝桥C++ > 2025年3月蓝桥杯蓝桥C++(STEMA)中/高级

2025年3月蓝桥杯蓝桥C++(STEMA)中/高级
STEMA 2025 2025-06-09 19:42:55 90

一、单选题

1.

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

int sum = 0;
for (int i = 1; i <= 5; ++i) {
    if (i == 3) break;
    sum += i;
}
cout << sum << endl;
A.

3

B.

6

C.

12

D.

15

2.

定义二维数组 int a[3][3] = {{1,2},{3,6},{6,1,9}};,请问 cout<<(a[1][1]+a[2][2])*a[1][2]; 的结果是()。

A.

0

B.

14

C.

7

D.

不确定值

3.

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

void compute(int &a, int &b, int c = 10) {
    int temp = a;
    a = b + c;
    b = temp * c;
    c = b - a;
}
int main() {
    int x = 1, y = 2, z = 3;
    compute(z, x);
    compute(x, y, z);
    cout << x << " " << y << " " << z << endl;
    return 0;
}
A.

1 2 3

B.

13330317

C.

1 330 11

D.

13 330 11

4.

执行语句 cout<<(2+3)*4; 输出的结果是()。

A.

14

B.

20

C.

24

D.

(2+3)*4

5.

定义变量 int a=2,执行语句 a *= 4 后,a 的值是()。

A.

2

B.

6

C.

8

D.

16

二、编程题

1.

最终分数

题目描述:

A、B、C 三人之间进行了若干场一对一的乒乓球比赛。比赛规则如下:

1)每场比赛为一对一形式,只有两人参与;

2)每场比赛的胜者加 10 分,败者扣 10 分;

3)初始时,三人的分数均为 0 分。

已知比赛结束后 A 和 B 的最终分数,请根据规则判断 C 的分数是否大于 0,并输出 C 的最终分数。

输入描述:

一行输入两个整数(-1000≤整数≤1000),分别表示比赛结束后 A 和 B 的分数,整数之间以一个空格隔开。

输出描述:

第一行输出一个字符,如果 C 的分数大于 0,则输出 "Y",否则,输出 "N";

第二行输出一个整数,表示 C 的分数。


样例输入:

10 -20

样例输出:

Y
10
2.

山峰高度

题目描述:

有 n 座山峰排成一行,从左到右依次编号为 1 至 n。已知每座山峰的高度,请找出满足以下条件的所有山峰中编号最大的那个。

条件:该山峰的左侧(即所有编号比它小的山峰)至少存在一座山峰的高度小于它。

如果存在这样的山峰,输出其编号;否则,输出 -1。

例 1:n = 5,从左到右每座山峰的高度依次为 140,200,120,150,110;其中 2 号和 4 号山峰都满足条件,编号最大的是 4 号山峰。

例 2:n = 3,从左到右每座山峰的高度依次为 190,105,82,没有满足条件的山峰。

输入描述:

第一行输入一个整数 n(1≤n≤500),表示山峰的数量;

第二行输入 n 个整数(1≤整数≤5000),表示从左到右每座山峰的高度,整数之间以一个空格隔开。

输出描述:

输出一个整数,表示满足题目条件的最大山峰编号,如果没有满足条件的山峰则输出 -1。


样例输入:

5
140 200 120 150 110

样例输出:

4
3.

旋转矩阵

题目描述:

给定两个 n × n 的数字矩阵,判断能否通过将其中任意一个矩阵顺时针旋转 0 度或 90 度或 180 度或270 度后,使得两个矩阵对应位置的元素完全相同。

如果满足则输出 "YES",否则输出 "NO"。

例如:n = 3,两个 3 × 3 的数字矩阵如下:

这里我们选择旋转矩阵 1,将矩阵 1 顺时针旋转 0 度、90 度、180 度以及 270 度后的结果分别如下:

不难发现,当矩阵 1 顺时针旋转 180 度后,两个矩阵对应位置的元素完全相同。

输入描述:

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

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

接下来的 T 组数据:

每组数据的第一行输入一个整数 n(2≤n≤100),表示矩阵的大小;

接下来 n 行,每行输入 n 个整数(0≤整数≤9),表示矩阵 1 中的元素,整数之间以一个空格隔开;

再接下来 n 行,每行输入 n 个整数(0≤整数≤9),表示矩阵 2 中的元素,整数之间以一个空格隔开。

输出描述:

输出 T 行。其中第 i 行表示第 i 组测试数据的判断结果,如果能够通过旋转使得两个数字矩阵对应位置的元素完全相同,则输出 "YES",否则输出 "NO"。


样例输入:

2
3
1 2 3
4 5 6
7 8 9
9 8 7
6 5 4
3 2 1
2
1 0
0 1
2 0
0 2

样例输出:

YES
NO
4.

促销活动

题目描述:

餐厅推出促销活动,顾客每消费 1 元即可获得 10 积分。

已知顾客的消费金额为 n 元,计算其所得积分。

例如:n = 50,顾客消费了 50 元,可获得 500 积分(50 × 10)。

输入描述:

输入一个整数 n(1≤n≤500),表示顾客的消费金额。

输出描述:

输出一个整数,表示该顾客可获得的积分数。


样例输入:

50

样例输出:

500
5.

移除棋子

题目描述:

有 n 颗棋子排成一排,每颗棋子为白色(用 1 表示)或黑色(用 0 表示)。每次可以选择从最左端或者最右端移除一颗棋子,最终使剩余棋子中白色棋子的数量为 m。

给定两个整数 n 和 m,及 n 颗棋子的颜色排列。请计算最少要移除多少颗棋子,才能使剩余棋子中白色棋子的数量为 m;如果无法实现该目标,输出 -1。

例 1:n = 8,m = 2,8 颗棋子的颜色分别是 0 1 0 1 1 0 0 1,要使剩余棋子中白色棋子的数量为2,最少需要移除 3 颗棋子,移除方案如下:

第一次,移除最右端的棋子,移除后剩余棋子的颜色分别是 0 1 0 1 1 0 0;

第二次,移除最左端的棋子,移除后剩余棋子的颜色分别是 1 0 1 1 0 0;

第三次,移除最左端的棋子,移除后剩余棋子的颜色分别是 0 1 1 0 0;

此时,剩余棋子中白色棋子的数量为 2。

例 2:n = 5,m = 3,5 颗棋子的颜色分别是 1 0 0 1 0,无论如何移除棋子,都不能使剩余棋子中白色棋子的数量为 3。

输入描述:

第一行输入两个整数 n,m(1≤n,m≤106),分别表示初始棋子数量和目标白色棋子数量,整数之间以一个空格隔开;

第二行输入 n 个整数(整数为 1 或 0,1 表示白色棋子,0 表示黑色棋子),表示从左到右每颗棋子的颜色,整数之间以一个空格隔开。

输出描述:

输出一个整数,表示最少要移除多少颗棋子,才能使剩余棋子中白色棋子的数量为 m;如果无论如何移除棋子,都不能使剩余棋子中白色棋子的数量为 m,则输出 -1。


样例输入:

8 2
0 1 0 1 1 0 0 1

样例输出:

3
公众号
客服 反馈
顶部