最好用电脑,谷歌浏览器做题; 页面打开不要超过1天,不然就失效了。

蓝桥杯2020年3月省赛模拟C++高级组


1.单选题

1.结构化程序所要求的基本结构不包括( )。 


A.顺序结构 

B.GOTO()跳转 

C.选择(分支)结构 

D.重复(循环)结构 

2.若定义 int a=2,b=2,下列表达式中值不为 4 的是( )。 


A.a*(++b) 

B.a*(b++) 

C.a+b 

D.a*b 
 

3.在下列选项中,不能输出 100 个整数的是( )。 


A.
 for(int i=0;i<100;i++) 
cout<int i=0; 
 do 
 { 
 cout<i++;
 } 
 while(i<100); 

C.
int i=0; 
 while(i<100) 
 { 
 cout< i++; 
 } 

D.
int i=0; 
 while(i<100) 
 { 
 i++; 
 if(i<100) continue; 
 cout< } 

4.下列叙述中正确的是()。 


A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 

B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 

C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 

D.上述三种说法都不对 

5.小蓝打羽毛球实行积分赛制,获胜积 5 分,打平积 2 分,失败扣 1 分。已知小蓝在 20 场积分赛后积61 分且有 3 场比赛打平,那么小蓝的胜率为(C) 
 A、48% 
 B、55% 
 C、60% 
 D、75% 

2.编程题

1.属相
 (程序命名:mouse.cpp )
我们中国人对老鼠的感情可不一般,鼠是中国传统十二生肖之首。 
那么 2020 年出生的“20 后”是否都是“鼠宝宝”呢?其实不是,2020 年 1 月 1 日~1 月 24 日出生的“20 后”,仍然是“猪宝宝”,因为他们出生在农历己亥猪年;大年初一(1 月 25 日)及之后出生的“20 后”才是“鼠宝宝”。那么接下来请你判断一下,以下生日的宝宝是“猪宝宝”还是“鼠宝宝”? 
输入:符合常识的两个空格分隔的整数 month, day,分别代表宝宝出生的月份及日子,
(1<=month<=12, 1<=day<=31)。 
输出:若是“猪宝宝”请输出"Pig";若是“鼠宝宝”请输出"Mouse"。 
样例输入: 
1 1 
样例输出: 
Pig 
 
评分标准: 
30分:完成题目样例和给出的一个样例; 
40分:在30分的基础上完成给出的第三个样例; 
50分:在40分的基础上完成给出的第四个样例。 





2.写个“2” 
程序命名:two.cpp 
2020年2月,小蓝参加“蓝桥杯大赛青少年创意编程C++组”选拔赛。在一个这么“2”的时间里参赛,小蓝一时高兴,忍不住在键盘上敲出了一个会写“2”的程序。 
输入: 
一个整数 n(3<=n<=100) 
输出: 
一个由“*”组成的长、宽都是 n 的“2”字图形,具体请参见样例。 
样例输入 1: 

样例输出 1: 
 
 
样例输入 2: 

样例输出 2: 
 
评分标准: 
30分:完成题目样例和给出的一个样例; 
40分:在30分的基础上完成给出的第三个样例; 
50分:在40分的基础上完成给出的第四个样例。 





3.石头剪刀布 
程序命名:game.cpp  
放假期间,小蓝与电脑对垒,玩起了一款经典的游戏:“石头剪刀布”。游戏规则想必大家已经非常熟悉了:两边一样则为平局,否则石头胜于剪刀;剪刀胜于布;布胜于石头。小蓝与电脑的对垒一共有 n 个回合,平局或败局得分为 0;胜局得分取决于小蓝出手的阵容, 剪刀、石头、布各有不同的分值: 
出手“石头”赢的话得 r 点分值; 
出手“剪刀”赢的话得 s 点分值; 
出手“布”赢的话得 c 点分值; 
但是,在第 i 回合中,小蓝不能使用在第(i-k)个回合中使用的阵容。 (在前 k 个回合中,小蓝可以使用任何阵容。) 
在游戏开始之前,电脑已经事先安排好了每回合比赛的阵容,而小蓝居然未卜先知了电脑的阵容!电脑的出手阵容用字符串 t 给出,如果 t 的第 i 个字符(1≤i≤n)为 r,则代表电脑将在第 i 个回合中出手“石头”。同样,c 和 s 分别代表“布”和“剪刀”。 
那么请你计算一下,小蓝在游戏中可以获得的最大分值是多少? 
输入: 
n k 
r s c 

其中:n,k,r,s,c 都是整数,t 是字符串。 
2≤n≤20 
1≤k≤n−1 
1≤r,s,c≤1000 
字符串 t 的长度是 n 
输出: 
小蓝在游戏中可以获得的最大分值。 
样例输入: 
5 2 
8 7 6 
rsrcr 
样例输出: 
27 
样例说明: 
机器出手的阵容是:石头、剪刀、石头、布、石头 
则小蓝出手:布、石头、石头、剪刀、布,分值为6+8+0+7+6=27分 
第3回合里,小蓝不能再出第(3-2=1)回合里出过的“布”了,所以选择了平局,出手“石头”,得0分。 
评分标准: 
30 分 :完成一个题目样例和给出的一个样例; 
50 分 :在 30 分的基础上完成给出的另外一个样例; 
100 分:在 50 分的基础上完成给出的最后一个样例。 





4.部分排序 
程序命名:sort.cpp 
题目描述: 
一个数列 P 中有 n 个数。小蓝从中选择位置连续的 k 个数,并对这 k 个数进行升序排列。求排序后的数列有多少种? 
输入: 
n k 
P0 P1 ⋯ Pn−1 
其中:所有的输入都是整数,2≤n≤100,2≤k≤n,0≤Pi≤n−1,P0,P1,⋯,Pn−1 数值都不相同。 
输出: 
部分排序后数列的排列数。 
样例输入: 
5 3 
0 2 1 4 3 
样例输出: 

样例说明:从原数列抽取连续 3 个数排序后有 2 种可能性: (0,1,2,4,3) 和 (0,2,1,3,4)。 
评分标准: 
30 分 :完成题目样例和给出的一个样例; 
50 分 :在 30 分的基础上完成给出的另外一个样例; 
100 分:在 50 分的基础上完成给出的最后一个样例。 





5.题目的分数值 
程序命名:score.cpp 
蓝桥杯 C++青少组的比赛有 n 个问题,现在请你给这 n 个问题分配分值。 
n 个问题已经按从简单到困难排好序,第 i 个问题的分值是 Ai。n 个问题的分值满足如下关系: 
1≤A1≤A2≤…≤An≤n。不同的问题可以具有相同的分值。 
主办方希望:解决更多问题的参赛者的排名更高。 因此,对于任何解决了 k(1≤k≤n-1)个问题的参赛者,其分数总和一定要小于解决了任何 k + 1 个问题的参赛者的分数总和。 你有几种分配分值的方法? 将答案对素数 m 取余后输出。 
输入: 
整数 n 和 m 
其中 2≤n≤5000,9×10^8输出: 
分值分配的方案数对 m 取余后的数字 
样例输入 1: 
2 998244353 
样例输出 1: 

样例 1 说明: 
2 个题的分值分配有 3 种方案: (1,1), (1,2), (2,2)。 
 
样例输入 2: 
3 998244353 
样例输出 2: 

样例 2 说明: 
3 个题的分值分配有 7 种方案:(1,1,1), (1,2,2), (1,3,3), (2,2,2), (2,2,3), (2,3,3), (3,3,3)。 
评分标准: 
30 分 :完成题目样例和给出的一个样例; 
50 分 :在 30 分的基础上完成给出的另外一个样例; 
100 分:在 50 分的基础上完成给出的最后一个样例。 
 







`

1.单选题
1 2 3 4 5
2.编程题
1 2 3 4 5