image

编辑人: 桃花下浅酌

calendar2025-07-27

message7

visits538

第14届蓝桥杯C++青少组中/高级组选拔赛(STEMA)2022年12月18日真题参考答案

一、单选题

1、执行cout<<5*3; 语句后,输出的结果是(   )。

A 0

B 15

C 125

D 2


2、下列选项中,按照数据类型的字节长度从小到大排序正确的是(   )。

A char,long long,float

B char,float,long long

C long long,float,char

D float,long long,char


3、下列表达式结果为true的是(   )。

A 'z' == 'Z'

B 'z' < 'Z'

C '9' > 'Z'

D 'c' +1> 'D'


4、下列选项中,对二维数组a初始化不正确的是(   )。

A int a[2][3]={{1,2,3},{4,5,6}} ;

B int a[2][3]={{1,2},{3}} ;  

C int a[2][3]={1,2,3,4,5,6} ;

D int a[2][3]={{1,2},{3,4},{5,6}} ;


5、定义int a[5], *p = a; 则对a数组元素的正确引用是(   )。

A *&a [5]

B a +2

C *(p+5)

D *(p+2)


二、实操题

6、求位数

题目描述:

给定一个正整数N(1<N<108),输出N为几位数。

输入描述:

输入一个正整数N(1<N<108

输出描述:

输出一个整数,表示N为几位数


样例输入:

15

样例输出:

2

参考答案:```输入的正整数N为n如果 n < 10,输出1如果 10 <= n < 100,输出2如果 100 <= n < 1000,输出3如果 1000 <= n < 10000,输出4如果 10000 <= n < 1000000,输出5如果 1000000 <= n < 10000000,输出6如果 n >= 10000000,输出7```


7、字符反转

题目描述:

给定一个只包含大写字母“M”和“W”的字符串(字符串长度小于100),然后对字符串中位置为偶数的字符进行反转(M反转为W,W反转为M;字符串中左边第1个字符位置为1)。

例如:原字符串为“WMMW”,反转后为“WWMM”

输入描述:

输入一个只包含大写字符“M”和“W”的字符串(字符串长度小于100)

输出描述:

输出一个字符串,表示对原字符串中位置为偶数的字符反转后的字符串


样例输入:

WMMW

样例输出:

WWMM

参考答案:给定字符串为:WMMW遍历字符串,位置为偶数的字符分别为第2位和第4位,分别对应字符'W'和'W'。将第2位字符'W'反转为'M',第4位字符'W'反转为'M',得到新字符串:WMWM。但是题目要求的是位置为偶数的字符反转,即只需要将第2位和第4位的字符进行反转,因此正确答案为:WWMM。


8、排名

题目描述:

某比赛有N(2≤N≤50)名选手参加,给定每名参赛选手的编号(1到N)和比赛得分(0≤得分≤100),请按照分数从高到低的顺序排序,如果分数相同就按照编号排序,编号小的排前边。

输入描述:

第一行输入一个正整数N(2≤N≤50),表示参赛人数

第二行开始,共输入N行,每行两个正整数,分别表示参赛选手的编号和比赛得分(0≤得分≤100),正整数之间以一个空格隔开

输出描述:

按照排序规则,输出N行,每行两个正整数,分别表示编号和得分,正整数之间以一个空格隔开


样例输入:

3
3 84
1 87
2 84

样例输出:

1 87
2 84
3 84

参考答案:br />```31 872 843 84```


9、充电站

题目描述:

一条笔直的公路沿途有N(2≤N≤100)个充电站,包含起点和终点各一个。小明驾驶电动汽车要从公路的起点到达终点。

已知电动汽车充满电后可行驶的里程数D(10≤D≤10000),及N个充电站每相邻的两个充电站之间的距离,并且小明在起点第一次给电动汽车充满电。请帮助小明计算出最少充电几次才能从起点到达终点(需包含起点的第一次充电)。

 注意:

1)到达终点后不需要再充电;

2)每次充电都要充满。

例如:D = 10,N = 7,7个充电站之间的距离依次为1,3,6,8,1,4,最少需要充电3次。

第一次充电在起点(第1个充电站);

第二次充电在第4个充电站(此时行驶里程为10,刚好电量耗尽);

第三次充电在第6个充电站(此时在第二次充满电后行驶了9,剩余电量只能行驶1,距离下一充电站的距离为4,所以必须在此充电站充电)。

输入描述:

第一行输入两个正整数D(10≤D≤10000)和N(2≤N≤100),分别表示电动汽车充满电后可行驶的里程数和公路沿途充电站的个数,正整数之间以一个空格隔开

第二行输入N-1个正整数(1≤正整数≤100000),依次表示相邻两个充电站之间的距离,正整数之间以一个空格隔开

输出描述:

输出一个整数,表示电动汽车从公路的起点到达终点最少充电的次数,如果不能到达终点输出-1(需包含起点的第一次充电)。


样例输入:

10 7
1 3 6 8 1 4

样例输出:

3

参考答案:对于给定的输入,首先我们需要计算出电动汽车从起点到终点的总距离。然后,我们遍历充电站之间的距离,计算电动汽车在每个充电站充电后能够行驶的距离,直到电动汽车能够到达终点或者无法到达终点。在遍历过程中,我们记录电动汽车充电的次数。


10、猴子拿桃

题目描述:

有N筐桃子从左到右排成一排,已知每筐桃子的数量。现猴子要按照以下规则拿取桃子:

1)猴子每次拿一筐桃子,一共要拿K次桃子;

2)猴子只能按照从左到右的顺序拿取桃子,不能回头,且每次拿取桃子的数量不能少于(大于等于)上一次。

当给定桃子筐数N(1≤N≤12)及每筐桃子的数量,和要拿取桃子的次数K(1≤K≤N),请编写程序,如果有符合规则的拿取方式,输出猴子最多可以拿到的桃子数量,否则输出0。

例如:

N = 4,4筐桃子的数量从左到右依次为16,12,16,17;

K=3,猴子一共要拿3次桃子,符合规则的拿取方式有:[16,16,17],[12,16,17];

其中可拿取到最多桃子的方式是:[16,16,17],合计为49。则猴子最多可以拿到49个桃子。

输入描述:

第一行输入两个正整数N和K(1≤N≤12,1≤K≤N),分别表示桃子的筐数和一共要拿取桃子的次数,正整数之间以一个空格隔开

第二行输入N个正整数(10≤正整数≤200),从左到右依次表示每筐桃子的数量,正整数之间以一个空格隔开

输出描述:

输出一个整数,如果有符合规则的拿去方式,输出猴子最多可以拿到的桃子数量,否则输出0


样例输入:

4 3
16 12 16 17

样例输出:

49

参考答案:```#include #include #include using namespace std;int maxPeaches(int N, int K, vector& peaches) int maxPeachCount = 0;vector dp(N + 1, 0);for (int i = 1; i <= N; i++) {dp[i] = dp[i - 1] + peaches[i - 1];}for (int i = N; i >= K; i--) {int maxPeach = 0;for (int j = i; j >= K; j--) {maxPeach = max(maxPeach, dp[j] - dp[j - K] + peaches[j - 1]);}maxPeachCount = max(maxPeachCount, maxPeach);}return maxPeachCount;int main() int N, K;cin >> N >> K;vector peaches(N);for (int i = 0; i < N; i++) {cin >> peaches[i];}int result = maxPeaches(N, K, peaches);cout << result << endl;return 0;```


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第14届蓝桥杯C++青少组中/高级组选拔赛(STEMA)2022年12月18日真题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share