试卷 第十三届蓝桥杯国赛C++真题
第十三届蓝桥杯国赛C++真题
选择题
第 1 题    单选题

在C++语言中,char类型数据占( )字节。

A.

1

B.

2

C.

4

D.

8

第 2 题    单选题

以下选项中,哪一个是面向对象程序设计中的程序组成单元()。

A.

B.

语句

C.

子数

D.

主函数

第 3 题    单选题

已知:int x=3;int y=2;执行语句cout<<(x-=y,x*=y+7/5);后输出的结果是()。

A.

1

B.

3

C.

5

D.

7

第 4 题    单选题

以下选项中描述不正确的是()。

A.

循环队列属于线性表

B.

二叉链表是二叉树的存储结构

C.

带链的队列是队列的一种存储结构

D.

循环链表是循环队列的一种存储结构

第 5 题    单选题

在编写程序时,使用重载函数的目的是( )。

A.

节省存储空间

B.

共享程序代码

C.

提高程序运行效率

D.

使用相同函数名调用功能相似函数

编程题
第 6 题    问答题

蓝桥杯青少组C++编程国赛题:电线上的小鸟。

题目描述:

在一根电线上落有N只小鸟,有的小鸟头向左看,有的小鸟头向右看,且每只小鸟只能看到它视线前的 那一只小鸟。

给定N只小鸟头的朝向,头向左看的小鸟使用小写字母“q”表示,头向右看的小鸟用小写字母“p”表示, 请你计算出N只小鸟中有多少只小鸟被0只小鸟看到,多少只小鸟被1只小鸟看到,多少只小鸟被2只小鸟看到。 例如:N=6,6只小鸟头的朝向分别为p,q,p,p,q,q。

如图:有2只小鸟被0只小鸟看到(第3只和第6只);有2只小鸟被1只小鸟看到(第1只和第2只);有2只 小鸟同时被2只小鸟看到(第4只和第5只)。

则输出三个数字分别为222

输入描述:

第一行输入一个正整数N(3≤N≤1000),表示有N只小鸟落在电线上

第二行输入N个字符,字符只能为“q”“p”“q”表示小鸟头向左看,“p”表示小鸟头向右看,字符之 间以一个空格隔开

输出描述:

一行输出三个整数,分别为有几只小鸟被0只小鸟看到;有几只小鸟被1只小鸟看到;有几只小鸟被2只 小鸟看到;整数之间以一个空格隔开

样例输入:

pqppqq 

样例输出:

 2 2 2

第 7 题    问答题

蓝桥杯青少组C++编程国赛题:金箍棒。

题目描述:

淘气的悟空变出了N根高度各不相同的金箍棒(1≤高度≤1000),并排列成一排。悟空可以对每根金箍棒施法,让金箍棒高度变短或者变长,但每一次施法只能使一根金箍棒变短1个高度或者变长1个高度。


现在悟空想通过施法将K(K≤N)根相邻的金箍棒高度变为相同,且要求施法的次数最少,请你帮助悟空 计算出最少需要施法几次可以使K根相邻的金箍棒高度变为相同。

例如:N=3K=23根金箍棒初始高度分别为:361。 第一次对高度为3金箍棒施法变长1个高度,变为4; 第二次对高度为6金箍棒施法变短1个高度,变为5; 第三次对高度为4金箍棒施法变长1个高度,变为52根相邻的金箍棒高度变为相同,最少施法3次。

输入描述:

第一行输入两个正整数NK (1≤K≤N≤10000)N表示金箍棒的根数,K表示需要将K根相邻的金箍棒高 度变为相同,两个整数之间以一个空格隔开

第二行输入N个各不相同的正整数 (1≤正整数≤1000),表示N根金箍棒的初始高度,N个整数之间以一 个空格隔开

输出描述:

输出一个整数,表示悟空最少需要施法几次可以使K根相邻的金箍棒高度变为相同

样例输入:

32 361 

样例输出: 3

第 8 题    问答题

蓝桥杯青少组C++编程国赛题::翻卡片。

题目描述:

小蓝在玩翻卡片游戏,每张卡片一面写着大写字母"A",另一面写着大写字母“B”。首先将卡片排成一个N*N的矩阵。有的卡片是A面朝上,有的卡片是B面朝上。

现给定N的值,及N*N矩阵中每张卡片的状态,请你帮助小蓝挑选一张B面的卡,翻转成A面,使得翻转后的上、下、左、右四个方向相连的A面卡片最多,并将相连最多的卡片数量输出。

例如:N=33*3 的矩阵中的卡片状态如下:

选择红框内那张 面卡片,翻转为 面,可以使翻转后四个方向相连的 面卡片最多,为 张。

输入描述:

第一行输入一个正整数 N(2≤N≤50),表示矩阵的行数和列数
第二行开始输入 
行,每行输入 个字符(‘A’或者‘B’),表示矩阵中卡片状态,字符之间以一个空

格隔开

输出描述:

输出一个整数,表示翻转后矩阵中上、下、左、右四个方向相连的最多 面卡片张数 样例输入:

3A B B ABA BAB

样例输出:

5

第 9 题    问答题

蓝桥杯青少组C++编程国赛题::最少问题。

题目描述:

河面上有N个木桩排成一排,且每个木桩上都有一个数字,木桩上的数字表示青蛙从当前木桩一次最多可跳跃的木桩个数(例如木桩上的数字为2,青蛙可以跳跃一个木桩也可以跳跃两个木桩)。请你帮助青蛙计算出从第一个木桩跳跃到最后一个木桩最少需要跳跃几次。

例如:N=5个木桩上的数字分别为 21513

第一次跳跃,青蛙从第一个木桩跳跃到第三个木桩,共跳了 个木桩; 第二次跳跃,青蛙从第三个木桩跳跃到最后一个木桩,共跳了 个木桩; 故最少需要跳跃2次可到达最后一个木桩 。

输入描述:

第一行输入一个正整数 N(5≤N≤100),表示河面上的木桩个数
第二行输入 
个正整数(1≤正整数≤1000),表示每个木桩上的数字,正整数之间以一个空格隔开(输

入的正整数顺序为木桩的排列顺序,第一个正整数为第一个木桩上的数字)

输出描述:

  输出一个整数,表示青蛙最少需要跳跃几次可到达最后一个木桩

样例输入:

2 1 5 1 3

样例输出:

2

第 10 题    问答题

蓝桥杯青少组C++编程国赛题:报数游戏。

题目描述:

某班级男生人数为X人,女生人数为Y人,现全班同学围成一个圆圈,并按照顺时针方向为每名同学编号(编号从1到X+Y)。现给出一个正整数K【2<K<(X+Y)】,从编号为1的同学开始顺时针方向报数,报到K的同学退出圆圈,下一名同学继续从1报数,再次报到k的同学退出圆圈。如此循环,直到剩余人数为 X时游戏结束。


请你计算出游戏开始时 X 名男生分别应该排在什么位置,才能保证每次离开的都是女生,游戏结束时剩 余 X 人都是男生。并将游戏开始时每名男生的位置编号按照从小到大顺序输出。

例如:X=5,Y=3,K=3,8 名同学按照如下顺序排列,可以使 3 轮报数过后最后剩余的 5 名同学都为男 生(蓝色为男生位置,红色为女生位置)。

故 5名男同学的编号分别为 24578
输入描述:输入三个正整数 
XYK(3≤X≤1003≤Y≤1002<K<(X+Y)),表示男生人数,示女生人数,报数为 的同学退出圆圈,三个正整数之间以一个空格隔开 输出描述:将每名男生位置编号按照从小到大的顺序输出,编号之间以一个空格隔开

样例输入:5 3 3 

样例输出:2 4 5 7 8

第 11 题    问答题

蓝桥杯青少组C++编程国赛题:路线。

题目描述:

小蓝将多盆鲜花摆成一个M*N的矩阵,小蓝每天都会从左上角位置的花盆出发,给每一个花盆中的鲜花浇水。

已知:

1)每两个相邻的花盆之间的距离都相等; 2)每次小蓝浇水的路线都是走直线,不能走斜线; 3)除左上角花盆以外,其他花盆只能经过一次; 4)每盆花都浇过之后返回左上角位置。

当给出MN的值,请你帮助小蓝找出一共有多少条路线可以满足以上条件,如果没有满足条件的路线输 出0

例如:M=3N=4,一共有4条路线满足以上条件。

输入描述:输入两个正整数MN(2≤M≤102≤N≤10),M表示矩阵的行数,N表示矩阵的列数,两个 正整数之间以一个空格隔开

输出描述:输出一个整数,表示一共有多少条路线可以满足以上条件,如果没有满足条件的路线输出0

样例输入:3 4 

样例输出:4

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