第十一届蓝桥杯大赛青少年国赛C++组试题真题(2020年)

2023年06月02日

一、选择题

第 1 题 单选题

在数组中,数组名表示( ).

A. 数组第1个元素的首地址

B. 数组第2个元素的首地址

C. 数组所有元素的首地址,

D. 数组最后1个元素的首地址

第 2 题 单选题

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

A. 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B. 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C. 顺序存储结构能存储有序表,链式存储结构不能存储有序表

D. 链式存储结构比顺序存储结构节省存储空间

第 3 题 单选题

下列排序方法中,最坏情况下比较次数最少的是( ).

A. 冒泡排序

B. 简单的选择排序

C. 直接插入排序

D. 堆排序

第 4 题 单选题

下列表达式正确的是( ).

A. 9++

B. (x+y)++

C. c+++c+++c++

D. ++(a-b--)

第 5 题 单选题

针对以下代码,判断下列说法哪个是正确的( ).

const char str1[]="abc";
const char str2[] ="abc";
const char *p1 ="abc";
const char *p2 ="abc";

A. str1和str2地址不同,P1和P2地址相同

B. str1和str2地址相同,P1和P2地址相同

C. str1和str2地址不同,P1和P2地址不同

D. str1和str2地址相同,P1和P2地址不同

二、编程题

第 6 题 问答题

求阶乘

提示信息:阶乘定义:一个正整数的阶乘是所有小于及等于该数的正整数的乘积。

例如:3的阶乘6(也就是123的结果)

例如:5的阶乘120(也就是1234*5的结果)

题目描述:输入一个正整数N(3<=N<=20),输出1到N之间(包含1和N)所有正整数阶乘的和。

例如:输入为3,1的阶乘为1,2的阶乘为2,3的阶乘为6,

1+2+6=9,则输出9.

输入描述

输入一个正整数N(3<=N<=20)

输出描述

输出1到N之间(包含1和N)所有正整数阶乘的和

样例输入

3

样例输出

9

评分标准:

10分:能正确输出一组数据;

10分:能正确输出两组数据;

10分:能正确输出三组数据;

第 7 题 问答题

判断偶数

题目描述:

输入两个不相等的四位正整数N(1000<=N<=9999)和M(1000<=M<=9999),其中N < M,中间以一个空格隔开,输出N与M之间(包含N和M)所有满足要求的正整数且正整数之间以一个英文逗号隔开。

要求每个正整数的各个位上的数都为偶数(注:0为偶数)

输入描述

在一行输入两个不相等的四位正整数N和M(N和M之间以一个空格隔开)

输出描述

输出N与M之间(包含N和M)所有满足要求的正整数且正数之间以一个英文逗号隔开

样例输入

4000 4008

样例输出

4000,4002,4004,4006,4008

评分标准:

10分:能正确输出一组数据;

20分:能正确输出两组数据;

20分:能正确输出三组数据;

第 8 题 问答题

计数

题目描述

输入一个正整数n(1 <=n<= 1000),统计从1到n之间(包含1和n)所有正整数中,0,1,2,3,4,5,6,7,8,9的数字分别出现的次数,且按样例分行输出(按0到9顺序输出,英文逗号前为0到9的数字,逗号后为该数字出现的次数)。

例如:n为12,那么1到n之间所有的正整数有1,2,3,4,5,6,7,8,9,10,11,12.

在12个正整数中数字0出现了1次数字1出现了5次数字2出现了2次数字2,3,4,5,6,7,8,9分别出现了1次。

输入描述

输入一个正整数n

输出描述

0,0出现的次数

1,1出现的次数

2,2出现的次数

………

9,9出现的次数

样例输入

10

样例输出

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

评分标准:

10分:能正确输出一组数据;

20分:能正确输出两组数据;

20分:能正确输出三组数据;

第 9 题 问答题

找公共子串

题目描述:

分行输入两个字符串(2<=字符串长度<=100),找出两个字符串中最大的公共子串,然后将公共子串及公共子串的长度分行输出

例如:输入两个宇串为abcdab和baabcd,其最大的公共子串为

"abcd",子串长度为4.

输入描述

第一行输入一个字符串

第二行输入一个字符串

输出描述

第一行输出最大公共子串

第二行输出最大公共子串长度

样例输入

abcdab
baabcd

样例输出

abcd
4

评分标准:

10分:能正确输出一组数据;

20分:能正确输出两组数据;

20分:能正确输出三组数据;

第 10 题 问答题

最少问题

题目描述:

输入两个整数n(0 < n < 100001)和k(0 < k < 100001),通过对n连续进行加1或减1或乘以2这3种操作,使得n最后结果正好等于k(同一种操作可以使用多次也可以不使用),要求最后输出最少的操作次数。

例如:n为5,k为17,通过减1、乘以2、乘以2、加1四次操作得到17,也就是5-1=4,42=8、82=16,16+1=17.

输入描述

输入两个整数n和k(n和k之间以一个空格隔开)

输出描述

输出最少的操作次数

样例输入

5 17

样例输出

4

评分标准:

20分:能正确输出一组数据;

20分:能正确输出两组数据;

20分:能正确输出三组数据;

第 11 题 问答题

回形取数

提示信息:

回形取数是沿着一个数字矩阵的左上角向下开始移动取数当前方没有数字或者数字已经被取过就会左转继续移动取数当没有数可取时回形取数结束,如下图所示

回形取数结束后会产生一条线路图,也就是数字线路。

上路为:1,5,9,13,14,15,16,12,8,4,3,2,6,10,11,7

题目描述:

用户分行输入两个正整数(2<=正整数<=20),第一个数代表数字矩阵的行数,第二个数代表数字矩阵的列数,数字矩阵的数字为从1开始的正整数,根据回形取数规则将最终的数字线路输出(数字线路中的每个数字之间需要有一个英文逗号隔开)。

例如:

输入的是2和3数字矩阵为:

1 2 3
4 5 6

数字线路为:1,4,5,6,3,2

输入的是4和3数字矩阵为:

1 2 3
4 5 6
7 8 9
10 11 12

数字线路为:1,4,7,10,11,12,9,6,3,2,5,8

注:数字矩阵不需要输入此处只为展示

输入描述

第一行输入一个正整数作为行数

第二行输入一个正整数作为列数

编出描述

根据回形取数规则将数字线路输出(数字线路中的每数字之间需要有一个英文逗号隔开)

样例输入

3
2

样例输出

1,3,5,6,4,2

评分标准:

20分:能正确输出一组数据;

20分:能正确输出两组数据;

20分:能正确输出三组数据;

第 12 题 问答题

编程实现:带分数

提示信息:

带分数是分数的一种形式,带分数包含两个部分:整数部分和真分数部分.

例如:前边的3为整数部分,后边4分之3为真分数部分。读作:三又四分之三.

例如:

5用带分数形式可表示为:3+2956/1478,3+2956/1478,3+9562/4781,3+9712/4856

要求:带分数中,数字1-9分别出现且只出现一次。

5的带分数形式有4种表示法.

输出这个正整数满足要求的带分数表示方法,一共有多少种

样例输入

100

样例输出

11

评分标准:

20分:能正确输出一组数据;

20分:能正确输出两组数据;

20分:能正确输出三组数据;