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

2025年1月蓝桥杯蓝桥C++(STEMA)中/高级
STEMA 2025 2025-06-09 11:23:56 78

一、单选题

1.

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

int sum = 0;
for (int i = 1; i <= 30; i++)
    if (i % 5 == 4)
        sum += i;
cout << sum;
A.

95

B.

97

C.

99

D.

101

2.

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

void foo(int arr[], int size) {
    for (int i = 0; i < size; ++i) arr[i] += i;
}
int bar(int n) {
    if (n <= 1) return 1;
    return n * bar(n - 2);
}
int main() {
    int arr[5] = {1,2,3,4,5};
    foo(arr, 5);
    int result = 0;
    for (int i = 0; i < 5; ++i)
        result += bar(arr[i]);
    cout << "Result=" << result;
    return 0;
}
A.

Result=1066

B.

Result=1067

C.

Result=1068

D.

Result=1069

3.

下列选项中,哪个关键字的作用是读取输入数据?()

A.

cin

B.

cout

C.

cerr

D.

clog

4.

定义二维数组 int a[3][3] = {{3,1,6}, {7,4,5}, {0,8,9}};

请问 a[1][2] - a[2][1] 的结果是()。

A.

-6

B.

4

C.

-3

D.

2

5.

表达式 (4-2)*3+1 的值是()。

A.

-1

B.

7

C.

8

D.

-4

二、编程题

1.

小球的重量

题目描述:

有 n 个小球,编号为 1 到 n,所有小球的重量均不相等。

按照编号顺序,依次给出 1 到 n - 1 号小球与其他小球的重量比较关系(< 表示小于,> 表示大于)。

请找出重量第 k 大的小球,并输出其编号。

例如:n = 4,有 4 个小球,比较关系如下:

1 号小球与 2、3、4 号小球的重量比较关系:小于 2 号,小于 3 号,大于 4 号;用 "< < >" 表示。

2 号小球与 3、4 号小球的重量比较关系:大于 3 号,大于 4 号;用 "> >" 表示。

3 号小球与 4 号小球的重量比较关系:大于 4 号;用 ">" 表示。

根据上述比较关系可得,按照重量由大到小排序后小球的编号分别为:2、3、1、4;当 k = 3 时,重量第 3 大的小球编号为 1。

输入描述:

共 n + 1 行;

第一行输入一个整数 n(1≤n≤2000),表示小球的数量;

第二行输入 n - 1 个字符,字符为 '>' 或 '<',依次表示 1 号小球与 2、3、...、n 号小球的重量比较关系;

第三行输入 n - 2 个字符,字符为 '>' 或 '<',依次表示 2 号小球与 3、4、...、n 号小球的重量比较关系;

... 第 n 行输入 1 个字符,字符为 '>' 或 '<',表示 n - 1 号小球与 n 号小球的重量比较关系;

以上输入中,同一行字符之间以一个空格隔开;

第 n + 1 行输入一个整数 k(1≤k≤n)。

输出描述:

输出一个整数,表示重量第 k 大的小球编号。


样例输入:

4
< < >
> >
>
3

样例输出:

1
2.

单词验证

题目描述:

小丁在学习英语单词时发现,某些单词如果删除若干字母后(不改变剩余字母的顺序)可得到另一个单词。

现有 N 组数据,每组数据中给定两个仅包含小写字母的字符串,表示初始单词 s 和目标单词 t,请判断对于每组数据,能否从 s 中删除零个或多个字母得到 t,如果能得到输出 "YES",否则输出 "NO"。

例如:

N = 2,两组数据如下:

1)s = "adventure",t = "avenue",删除 "adventure" 中的第 2、6、8 个字母可得到"avenue",故输出 YES;

2)s = "good",t = "no",无论怎么删除都无法得到 t,故输出 NO。

输入描述:

第一行输入一个正整数 N(1≤N≤1000),表示数据组数;

接下来 N 行,每行输入两个仅包含小写字母的字符串,分别表示初始单词 s(1≤s 的长度≤500)和目标单词 t(1≤t 的长度≤500),字符串之间以一个空格隔开。

输出描述:

共 N 行,每行输出一个字符串,如果能从初始单词 s 中删除零个或多个字母得到目标单词 t,输出"YES",否则输出 "NO"。


样例输入:

2
adventure avenue
good no

样例输出:

YES
NO
3.

购买苹果

题目描述:

每箱苹果价值 n 元,购买 m 箱苹果,需要多少钱。

输入描述:

输入两个整数 n 和 m(1≤n≤50,1≤m≤100),分别表示每箱苹果的价格及购买苹果的箱数,整数之间以一个空格隔开。

输出描述:

输出一个整数,表示购买 m 箱苹果需要的钱数。


样例输入:

10 30

样例输出:

300
4.

分南瓜

提示信息:

奇数,指不能被 2 整除的整数。

例如:3、5、7 都是奇数。

题目描述:

农场有 3 块农田,每块农田有若干个南瓜,小夏希望将每块农田的南瓜分成两份,要求每份中的南瓜数量均为奇数。请帮助小夏逐一判断每块农田中南瓜的数量能否满足要求。

例如:3 块农田中南瓜的数量依次为 6,8,7;

第 1 块农田中南瓜数量为 6,可以分为 3 和 3 两份,均为奇数,满足条件;

第 2 块农田中南瓜数量为 8,可以分为 1 和 7 两份,均为奇数,满足条件;

第 3 块农田中南瓜数量为 7,无论如何分配,都无法确保两份南瓜的数量均为奇数,因此不满足条件。

输入描述:

一行输入 3 个整数(2≤整数≤500),分别表示每块农田中南瓜的数量,整数之间以一个空格隔开。

输出描述:

输出 3 个整数,依次表示对应农田中南瓜的数量是否满足分配要求,如果满足输出 1,否则输出 0,整数之间以一个空格隔开。


样例输入:

6 8 7

样例输出:

1 1 0
5.

超级幸运数

题目描述:

乐乐有两个幸运数字,分别是 4 和 7。如果一个整数满足以下两个条件中的任意一个,乐乐就会称其为超级幸运数。条件如下:

1)整数中各数位上的数字都是幸运数字,例如 4、47、444;

2)整数中数位上所包含的所有幸运数字的总数是幸运数字,例如 414177(其中包含了 2 个 4 和 2 个7,共有 4 个幸运数字)。

给定 n 个整数,请判断其中有多少个超级幸运数。

例如:n = 3,3 个整数分别为 74、417、40444444;

整数 74 是超级幸运数,因为数位上的 7 和 4 都是幸运数字,满足条件 1;

整数 417 不是超级幸运数,因为数位中 1 不是幸运数字,不满足条件 1,且数位中幸运数字的总数是 2,

2 不是幸运数字,不满足条件 2;

整数 40444444 是超级幸运数,因为 40444444 的数位中幸运数字的总数是 7,7 是幸运数字,满足条件 2;

综上所述,共有 2 个超级幸运数。

输入描述:

第一行输入一个整数 n(1≤n≤1000);

第二行输入 n 个整数(1≤整数≤109),整数之间以一个空格隔开。

输出描述:

输出一个整数,表示超级幸运数的数量。


样例输入:

3
74 417 40444444

样例输出:

2
公众号
客服 反馈
顶部