试卷 第十五届蓝桥杯青少组省赛C++编程中级组真题试卷
第十五届蓝桥杯青少组省赛C++编程中级组真题试卷
选择题
第 1 题    单选题
定义 char a[]="hello\nworld",执行 cout<<a,输出结果是(     )
A.
helloworld
B.

hello

world

C.
hellonworld
D.
hello\nworld
第 2 题    单选题
(11001010)2+(F8)16的结果是( )。
A.
(11001010)2
B.
(701)8
C.
(1C2)16
D.
(452)10
第 3 题    单选题
表达式  4%12 的结果是(     )。
A.

0

B.

4

C.

3

D.

12

第 4 题    单选题
下列选项中,逻辑表达式的值始终与 B的真假无关的是(    )。
A.
(!A || B) && A
B.
(A || B) && (!A && B)
C.
(A && !A)||B
D.
(A || B) && (A || !B)
第 5 题    单选题

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

int a[6] = {16, 8, 32, 10, 9, 21};
int func(int L, int R, int d)
{
if(L > R)
    return 0;
int sum = 0, m = a[L], index = L;
for(int i = L + 1; i <= R; i++)
{
     if(m < a[i])
    {
       m = a[i];
         index = i;
   }
}
int lt =func(L, index -1, d + 1);
int rt =func(index + 1, R, d + 1);
return lt + rt + d * m;
}
int main(){
cout << func(0, 5, 1);
     return 0;
}


A.

196

B.

197

C.

198

D.

199

编程题
第 6 题    问答题

题目描述

一本书共n页,小明计划第一天看x页,此后每一天都要比前一天多看y页,请问小明几天可以看完这本书?

输入格式

一行输入三个整数n,x,y(20<=n<=5000,1<x,y<=20) , 分别表示书的总页数、计划第一天看的页数以及此后每天都要比前一天多看的页数,整数之间以一个空格隔开

输出格式

输出一个整数,表示小明几天可以看完这本书

样例 1

样例输入 1

100 10 5

样例输出 1

5

第 7 题    问答题

题目背景

数字交换

题目描述

前导 0:整数前对数值无影响的 0

例如:

0201去除前导 0后为 201;

00321去除前导 0后为 321

给定一个正整数 n,请将n的最高位与最低位的数字进行交换,并输出交换后的结果。如果交换后的结果有前导0,去除前导0后再输出结果。

 1:n=173,将 173 的最高位1与最低位交换,交换后的结果为371;

 2:n=10200,将 10200 的最高位1与最低位0交换,交换后的结果为 00201,结果有前导0,去除前导0后的结果为201

输入格式

输入一个正整n(100≤n≤109)

输出格式

输出一个整数,表示将 n的最高位与最低位的数字交换后的结果如果交换后的结果有前导 0,去除前导0后再输出结果

输入输出样例

输入 #1

173

输出

371

第 8 题    问答题

题目背景

出现奇数次的数

题目描述

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

例如:35是奇数;46不是奇数。

给定 n个整数,其中只有一个数出现了奇数次,请找出这个数。

例如:77个整数为 6246426,其中只有出现了奇数次故输出6

输入格式

第一行输入一个整数n(1≤n≤10^5)

第二行输入 n个整数(1≤整数≤10^9) 整数之间以一个空格隔开数据保证只有一个数出现了奇数次)

输出格式

输出一个整数,表示出现了奇数次的数

输入输出样例

输入

7

6 2 4 6 4 2 6

输出

6

第 9 题    问答题

题目背景

字母移位

题目描述

字母移位:表示将字母按照字母表的顺序进行移动。

例如:'b' 向右移动一位是'c’'f'向左移动两位是'd'

特别地,'a'向左移动一位是'z''z'向右移动一位是'a'

给定一个仅包含小写字母且长度为 n 的字符串 s,以及 n 个正整数 a1,a2a3……an,接下来对字符串s按如下规律操作:

1.将第 1位字符向左移动 a1 ;

2.再将第 1位字符都向右移动 a2;

3.再将第 12位字符都向左移动 a3;

4.再将第 123位字符都向右移动 a4;

以此类推,直到将s的第1到第n位字符都(按规律向左或向右)移动an 位。

最后,将操作完成后的字符串s输出。

例如:n=5,字符串s="abcde"个正整数为13579;

"abcde"的第 11 位字符"a"向左移动 1,s变为"zbcde"

再将"zbcde"的前 2 位字符"zb" 向右移动 3 位,s变为"cecde"

再将"cecde" 的前 3位字符"cec"向左移动,s 变为"xzxde"

再将"xzxde" 的前 4 位字符"xzxd"向右移动位,s变为"egeke"

再将"egeke"的前 5 位字符"egeke" 向左移动 9 位,变为"vxvbv"

最后,将操作完成后的字符串"vxvbv"输出。

输入格式

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

第二行输入一个仅包含小写字母且长度为 n的字符串s

第三行输入 n个整数a1a2…an(1≤a≤10^9),整数之间以一个空格隔开

输出格式

输出一个字符串,表示操作完成后的字符串s

输入输出样例

输入

5

abcde

1 3 5 7 9

输出

vxvbv

第 10 题    问答题

题目描述

有一款新游戏,通关这个游戏需要完成n个任务,这n个任务可按任意次序完成,每个任务设置了启动能量值和完成任务消耗的能量值,且消耗的能量值小于等于该任务的启动能量值,如果玩家当前的能量值低于该任务启动能量值则不能开始该任务。

 1:玩家当前的能量值为 7,当前任务的启动能量值为 5,完成任务消耗的能量值为3,则可以开始该任务,完成任务后玩家剩余能量值为4

 2:玩家当前的能量值为 5,当前任务的启动能量值为 8,则无法开始该任务。

游戏开始时玩家需要一个初始能量值用来完成这 n个任务,当给定每个任务的启动能量值和完成任务消耗的能量值,请问初始能量的最小值是多少?

例如:n=3,这3个任务的启动能量值和完成任务消耗的能量值分别是:(22)(95)(74),那么玩家初始能量的最小值为12。可按照如下顺序完成任务:

1.完成任务(95),玩家剩余能量值为 7;

2.完成任务(74)玩家剩余能量值为 3;

3.完成任务(22),玩家剩余能量值为 1.

尽管最后玩家的能量值还剩余 1,但是初始能量值无法再降低,否则完成任务(95)后,玩家的剩余能量值会小于任务(74)的启动能量值,导致无法开始该任务。

输入格式

n+1

第一行输入一个整数n(1≤n≤105),表示游戏的任务数量

接下来n行,每行输入两个整xy(1≤y≤x≤1000),分别表示当前任务所需的启动能量值和完成任务所消耗的能量值,整数之间以一个空格隔开

输出格式

输出一个整数,表示玩家要完成这 n个任务需要的初始能量的最小

输入输出样例

输入

3

2 2

9 5

7 4

输出

12

第 11 题    问答题

题目描述

n件物品排成一排,编号分别为: 123...n身的价值,价值分别为:a1a2a3...an

请将这 n件物品拆分为k(不改变物品的顺序),要求每组内至少有一件物品,分别统计每组物品的价值之和,并找出其中的最大值。请设计一种分组方案,使这个最大值尽可能小,并输出这个最大值。

例如:n=5,表示有件物品,这件物品的价值分别是 61384;k=2,表示要将这 5 件物品拆分为两组,有如下方案:

1.[6] [1384],两组物品各自的价值之和为 6 16,最大值为16;

2.[61] [384],两组物品各自的价值之和为 7 15,最大值为15;

3.[613] [84],两组物品各自的价值之和为 10  12,最大值为 12;

4.[6138] [4],两组物品各自的价值之和为 18  4,最大值为18;

其中第 3 种方案,价值之和的最大值12  4 种方案中最小,故输出12.

输入格式

第一行输入一个整数n(1≤n≤1000),表示物品的数量

第二行输入 n 个整数a1a2,...an(1≤ai≤105)ai表示i号物品的价值,整数之间以一个空格隔开

第三行输入一个整数k(1≤k≤n),表示将n件物品拆分的组数

输出格式

输出一个整数,表示按照题目要求得到的最大值

输入输出样例

输入

5

6 1 3 8 4

2

输出

12

答题卡
选择题
1 2 3 4 5
编程题
6 7 8 9 10 11
题目总数:11
总分数:400
时间:90分钟