第十一届蓝桥杯C++青少年组中/高级组选拔赛2019年真题解析

一、单选题

第1题

一个C++语言的源程序中,有关主函数的说法正确的是( ).

A:可以有多个主函数
B:必须有一个主函数
C:必须有主函数和其他函数
D:可以没有主函数

答案:

第2题

在下面的条件语句中(其中s1和s2代表C++语言的语句),只有一个在功能上与其它三个语句不等价,它是( )。

A:if(a)s1;else s2;
B:if(a==0)s2;else s1;
C:if(a!=0)s1;else s2:
D:if(a==0)s1;else s2;

答案:

第3题

有如下程序段,则以下说法中正确的是( )。

int k=5do
{k--;
}while(k<=0;

A:循环执行5次
B:循环体语句一次也不执行
C:循环是无限循环
D:循环体语句执行一次

答案:

第4题

桌上放着红桃、黑桃和梅花三种牌,共20张。以下说法中正确的是( )
桌上至少有一种花色的牌少于6张
桌上至少有一种花色的牌多于6张
桌上任意两种牌的总数将不超过19张

A:(1)、(2)
B:(1)、(3)
C:(2)、(3)
D:(1)、(2)和(3)

答案:

第5题

小蓝和小青以及他们的爸爸妈妈共计6个人外出游玩,乘坐有6个座位的游览车,游览车每排只有1个座位,每人都要单独坐一个座位·为安全起见,车的首尾两座一定要坐两位爸爸:小蓝和小青一定要前后挨着坐,那么,这6人的排座方法共有( )种。

A:2
B:24
C:36
D:48

答案:B

二、编程题

第6题:参赛组别推荐

2019年11月,为了让选手们获得更好的参赛体验,蓝桥杯大赛青少年创意编程C++组细分为初级组和高级组,小蓝第一次报名参C++组的比赛,不知道自己该选择哪一组参赛,你能给他一些建认吗?蓝桥杯规定8到12岁的选手可以参加初级组:13到18岁的选手可以参加高级组的此赛:如果小于8岁,告诉他:“他还太小”:如果大于18岁,告诉他:“他太大了”。
程序命名:age.cpp
输入:
一个整数n(1<n<100),代表小蓝的年龄。
输出:
请给出参赛建议:
小于8岁,输出信息为:“You are too young!”
8到12岁,输出信息为:“Welcome to Junior Class!”
13到18岁,输出信息为:“Welcome to Senior Class!”
19岁及以上,输出信息为:“You are too old!”

样例输入:

9

样例输出:

Welcome to Junior Class!

答案:
参考程序:

#include <stdio.h>
int main() {int n;scanf("%d", &n);if (n < 8) {printf("You are too young!");}if (n >= 8 && n <= 12) {printf("Welcome to Junior Class!");}if (n >= 13 && n <= 18) {printf("Welcome to Senior Class!");}if (n >= 19) {printf("You are too old!");}return 0;
}

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

第7题:还差多少天到2020年?

编程实现:还差多少天到2020年?
时光飞逝,转眼间就到了2019年的最后一个月,小蓝也在期盼着2020年的到来,那意味着小蓝又长大了一岁。你能帮小蓝计算一下还有几天就到2020年了吗?
输入
两个整数 month,day 表示2019年的某月某日(0<month<13, 0<day<32).
输出
一个整数,表示距离2020年的天数。

样例输入

12 31

样例输出

1

答案:
参考程序一:

#include <iostream>
using namespace std;
int main() {int month, day, days, i,months[12] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};// month:输入的月份 day:输入的天数 days:2019年总天数 i:控制循环次数// months:数组存储1月到11月的天数 1月:31 2月:28 3月:31 4月:30 5月:31// 6月:30 7月:31 8月:31 9月 30 10月:31 11月:30 12月:31cin >> month >> day; // 输入当前月份和时间days = 366; // days为2019年总天数+1    加1是因为12月31号要在过一天才到2020年for (i = month - 1; i > 0;i--) // month-1原因:当月天数最后再减,先把之前月份天数减去{days = days - months[i]; // 用循环减去之前每月的总天数}days = days - day;    // 再减去当月的天数cout << days << endl; // 输出还剩几天
}

参考程序二:

#include <iostream>
using namespace std;
int main() {int month, day, sum = 0;cin >> month >> day;switch (month) {case 1:sum += 31;case 2:sum += 28;case 3:sum += 31;case 4:sum += 30;case 5:sum += 31;case 6:sum += 30;case 7:sum += 31;case 8:sum += 31;case 9:sum += 30;case 10:sum += 31;case 11:sum += 30;case 12:sum += 31;}sum -= day;sum++;cout << sum << endl;return 0;
}

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

第8题:大写字母Y

自从小蓝学会编程之后,他酷爱用编程的方式写字母。你能帮助他写出字母"Y”吗?
输入
整数n(1<n<50)。
输出
输出高度为2n-1行的大写字母"Y”
提示
第一行第一颗*左侧无多余空格,每行最后一颗*后无多余空格。
输入、输出要求如图所示
样例输入1:

2

样例输出1:

* ***

样例输入2:

4

样例输出2:

*     **   ** *****

答案:
参考程序:

#include <iostream>
using namespace std;
int main() {int n;cin >> n;int t = 2 * n - 1;for (int i = 1; i < n; i++) {for (int j = 1; j <= i - 1; j++)cout << " ";for (int j = 1; j <= t; j++) {if (j == 1 || j == t)cout << "*";elsecout << " ";}t -= 2;cout << endl;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++)if (j == n)cout << "*";elsecout << " ";cout << endl;}return 0;
}

第9题:计算24

“计算24"
程序命名:c24.cpp
“计算24"是一个流传已久的数字游戏,小蓝最近对此痴迷不已。
游戏规則是:对4个1-10之间的自然数,进行加、减、乘三种运算,要求运算結果等于24。乘法的优先级高于加、减,并且算式中不可以用括号,不可以改变4个数字出现的顺序。
下面我们给出两个游戏的具体例子:
若给出的4个操作数是:10、2、4、8,则有两种可能的解答方案:
10+2+4+8=24,10*2-4+8=24,输出内容:2
若给出的4个操作數是:7、2、3.6,则没有解答案,输出内容:0。
输入
四个整数。
输出
输出方案总数

样例输入1:

7 2 3 6

样例输出1:

0

样例输入2:

10 2 4 8

样例输出2:

2

答案:
参考程序一:

// 暴力枚举所有的可能性
#include <stdio.h>
int a, b, c, d, f1, f2, f3, tmp;
int main(int argc, char *argv[]) {int tj = 0;scanf("%d %d %d %d", &a, &b, &c, &d);for (f1 = 1; f1 <= 3; f1++)for (f2 = 1; f2 <= 3; f2++)for (f3 = 1; f3 <= 3; f3++) {if (f1 == 3 && f2 == 3 && f3 == 3)tmp = a * b * c * d;else if (f1 == 3 && f2 == 3 && f3 != 3) {tmp = a * b * c;if (f3 == 1)tmp += d;elsetmp -= d;} else if (f1 != 3 && f2 == 3 && f3 == 3) {tmp = b * c * d;if (f1 == 1)tmp = a + tmp;elsetmp = a - tmp;} else if (f1 == 3 && f2 != 3 && f3 == 3) {if (f2 == 1)tmp = a * b + c * d;elsetmp = a * b - c * d;} else if (f1 == 3 && f2 != 3 && f3 != 3) {tmp = a * b;if (f2 == 1)tmp += c;elsetmp -= c;if (f3 == 1)tmp += d;elsetmp -= d;} else if (f1 != 3 && f2 == 3 && f3 != 3) {tmp = b * c;if (f1 == 1)tmp = a + tmp;elsetmp = a - tmp;if (f3 == 1)tmp += d;elsetmp -= d;} else if (f1 != 3 && f2 != 3 && f3 == 3) {if (f1 == 1)tmp = a + b;elsetmp = a - b;if (f2 == 1)tmp += c * d;elsetmp -= c * d;} else {if (f1 == 1)tmp = a + b;elsetmp = a - b;if (f2 == 1)tmp += c;elsetmp -= c;if (f3 == 1)tmp += d;elsetmp -= d;}if (tmp == 24)tj++;}printf("%d\n", tj);return 0;
}

参考程序二:

#include <iostream>
using namespace std;
int main() {// char op[] = "+-*";// for(int i = 0; i < 3; i ++)//     for(int j = 0; j < 3; j ++)//         for(int k = 0; k < 3; k ++)//         {//             cout <<"x = a "<< op[i] << " b " << op[j] << " c " << op[k] <<//             " d;" << endl; cout << "if(x == 24) res ++;" << endl;//         }int a, b, c, d;cin >> a >> b >> c >> d;int res = 0, x;x = a + b + c + d;if (x == 24)res++;x = a + b + c - d;if (x == 24)res++;x = a + b + c * d;if (x == 24)res++;x = a + b - c + d;if (x == 24)res++;x = a + b - c - d;if (x == 24)res++;x = a + b - c * d;if (x == 24)res++;x = a + b * c + d;if (x == 24)res++;x = a + b * c - d;if (x == 24)res++;x = a + b * c * d;if (x == 24)res++;x = a - b + c + d;if (x == 24)res++;x = a - b + c - d;if (x == 24)res++;x = a - b + c * d;if (x == 24)res++;x = a - b - c + d;if (x == 24)res++;x = a - b - c - d;if (x == 24)res++;x = a - b - c * d;if (x == 24)res++;x = a - b * c + d;if (x == 24)res++;x = a - b * c - d;if (x == 24)res++;x = a - b * c * d;if (x == 24)res++;x = a * b + c + d;if (x == 24)res++;x = a * b + c - d;if (x == 24)res++;x = a * b + c * d;if (x == 24)res++;x = a * b - c + d;if (x == 24)res++;x = a * b - c - d;if (x == 24)res++;x = a * b - c * d;if (x == 24)res++;x = a * b * c + d;if (x == 24)res++;x = a * b * c - d;if (x == 24)res++;x = a * b * c * d;if (x == 24)res++;cout << res;return 0;
}

评分标准:
30分:完成题目样例和给出的一个样例;
50分:在30分的基础上完成给出的另外一个样例;
100分:在50分的基础上完成给出的最后一个样例。

第10题:超级素数

编程实现:超级素数
在大于1的自然數中,除了1和它本身以外不再有其他因数的数,被称为素数,又叫质数。超级素数是指一个素数,每去掉最后一位上一个数字,总能保证剩下的数依然为素数。比如
"373"就是一个超级素数,去掉个位的"3"后,"37"依然是素數:继续去掉"37"个位的"7"后,"3"还是素数。
程序命名:prime.cpp
输入
输人一个整数n(10<=n<=10^8)
输出
输出所有小于等于n的超级素数的个数

样例输入1:

30

样例输出1:

6

样例输出1提示:2 3 5 7 23 29
样例输入2:

50

样例输出2:

8

样例输出2提示:2 3 5 7 23 29 31 37

答案:
参考程序:

#include <cmath>
#include <iostream>using namespace std;
int ans, n;
int a[] = {2, 3, 5, 7}; // 最高位
int b[] = {1, 3, 7, 9}; // 其他位
bool check(int x) {     // 判断素数if (x == 1)return false;for (int i = 2; i <= sqrt(x); i++)if (x % i == 0)return false;return true;
}
void dfs(int x) { // 深搜if (x > n)return;ans++;for (int i = 0; i < 4; i++)if (check(x * 10 + b[i]))dfs(x * 10 + b[i]);
}
int main(int argc, char *argv[]) {cin >> n;for (int i = 0; i < 4; i++)dfs(a[i]);cout << ans << endl;return 0;
}

算法思想:
暴力枚举(70分)
可以通过线性筛素数法将所有不超过n的素数求出,然后枚举每个素数,判断是否符合超级素数的性质,时间复杂度 O(10^8),最终70分,TLE.
DFS
分析超级素数的性质,会发现最高位只能由素数2、3、5、7组成,其余各位只能从是奇数1、3、7、9中选择,因此可以使用DFS构造所有满足性质的超级素数。
评分标准:
30分:完成题目样例和给出的一个样例;
50分:在30分的基础上完成给出的另外一个样例;
100分:在50分的基础上完成给出的最后一个样例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22370.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机基础(8)——音频数字化(模电与数电)

&#x1f497;计算机基础系列文章&#x1f497; &#x1f449;&#x1f340;计算机基础&#xff08;1&#xff09;——计算机的发展史&#x1f340;&#x1f449;&#x1f340;计算机基础&#xff08;2&#xff09;——冯诺依曼体系结构&#x1f340;&#x1f449;&#x1f34…

如何在GlobalMapper中加载高清卫星影像?

GlobalMapper在GIS行业几乎无人不知&#xff0c;无人不晓&#xff0c;但它可以直接加载卫星影像也许就不是每个人都知道的了。 这里就来分享一下如何在GlobalMapper中加载高清卫星影像&#xff0c;并可以在文末查看领取软件安装包和图源的方法。 如何加载高清图源 首先&…

45-1 waf绕过 - 文件上传绕过WAF方法

环境准备: 43-5 waf绕过 - 安全狗简介及安装-CSDN博客然后安装dvwa靶场:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客打开dvwa靶场,先将靶场的安全等级调低,然后切换到文件上传 一、符号变异 在PHP中,由于其弱类型特性,有时候仅有一…

4月份新出!外网爆火的大模型黑书!内行人都在学~

今天给大家推荐一本4月份才新出的大型语言模型&#xff08;LLM&#xff09;的权威教程《基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理》&#xff01;Google工程总监Antonio Gulli作序&#xff0c;一堆大佬推荐&#xff01;这含金量不用多说&#xff0c;在这里给大…

Docker容器搭建ELK日志分析系统

Docker容器搭建ELK日志分析系统 文章目录 Docker容器搭建ELK日志分析系统资源列表基础环境一、创建容器网络二、创建容器挂载目录三、构建systemctl镜像三、构建Elasticsearch镜像3.1、构建Elasticsearch3.2、构建镜像3.3、启动容器3.4、进入容器3.5、查看节点信息 四、构建Log…

NLP基础——语言模型(动手学深度学习)

语言模型 联合概率 给定文本序列 x 1 , ⋯ , x t x_1,\cdots,x_t x1​,⋯,xt​&#xff0c;语言模型的目标是估计联合概率 P ( x 1 , ⋯ , x t ) P(x_1,\cdots,x_t) P(x1​,⋯,xt​). 这里的 x t x_t xt​ 可以认为是文本序列在时间步 t t t 处的观测或标签&#xff0c;而…

亚信安慧AntDB:卓越的拓展性和灵活性

在当今这个信息爆炸的时代&#xff0c;企业对数据处理的需求不断增长&#xff0c;传统的数据库系统往往难以应对海量数据的存储和处理挑战。然而&#xff0c;随着亚信安慧AntDB的出现&#xff0c;解决这一难题的曙光终于出现在眼前。AntDB不仅仅具备了高吞吐、高并发、高性能的…

Linux系统之mv命令的基本使用

Linux系统之mv命令的基本使用 一、mv命令介绍1. mv命令简介2. mv命令的使用结果 二、mv命令的使用帮助1. 在命令行的帮助信息2. mv常用选项 三、mv命令的基本使用1. 创建源目录和目标目录2. 新建测试文件3. 将源目录文件复制到目标目录4. 将文件进行改名5. 将目录的所有文件转移…

前端面试宝典总结4-手搓代码JavaScript(数据处理)

前端面试宝典总结4之手写代码JavaScript&#xff08;数据处理&#xff09; 本文章 对各大学习技术论坛知识点&#xff0c;进行总结、归纳自用学习&#xff0c;共勉&#x1f64f; 上一篇&#x1f449;: 前端面试宝典总结3-JavaScript&#xff08;2&#xff09; 文章目录 前端…

python长方形周长面积 2024年3月青少年编程电子学会python编程等级考试二级真题解析

目录 python长方形周长面积 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python长方形周长面积 2024年3月 python编程等级考试级编程题 一、…

matlab模拟太阳耀斑喷发

代码 function simulate_solar_flare% 参数设置gridSize 100; % 网格大小timeSteps 200; % 时间步数dt 0.1; % 时间步长% 初始化网格[X, Y] meshgrid(linspace(-5, 5, gridSize));Z zeros(size(X));% 设置耀斑初始位置和强度flareCenter [0, 0]; % 耀斑中心位置flareRad…

【实用技巧】Unity中的Image组件

Unity中的Image组件是UI系统的核心部分&#xff0c;用于显示图像和纹理。以下是一些关于Unity Image组件的实用技巧&#xff1a; 使用Sprite作为Image源&#xff1a; 将Sprite直接拖拽到Image组件的Source Image字段中&#xff0c;可以快速设置显示的图像。 调整颜色和透明度&a…

9 -力扣高频 SQL 50 题(基础版)

9 - 上升的温度 -- 找出与之前&#xff08;昨天的&#xff09;日期相比温度更高的所有日期的 id -- DATEDIFF(2007-12-31,2007-12-30); # 1 -- DATEDIFF(2010-12-30,2010-12-31); # -1select w1.id from Weather w1, Weather w2 wheredatediff(w1.recordDate,w2.recordDat…

SolidWorks功能强大的三维设计软件下载安装,SolidWorks最新资源获取!

SolidWorks&#xff0c;它凭借出色的三维建模能力&#xff0c;使得设计师们能够轻松构建出复杂且精细的机械模型&#xff0c;大大提升了设计效率和质量。 在机械设计领域&#xff0c;SolidWorks凭借其丰富的工具和特性&#xff0c;让设计师们能够随心所欲地挥洒创意。无论是零…

Flutter 中的 LayoutBuilder 小部件:全面指南

Flutter 中的 LayoutBuilder 小部件&#xff1a;全面指南 Flutter 是一个功能丰富的 UI 框架&#xff0c;它允许开发者使用 Dart 语言来构建高性能、美观的跨平台应用。在 Flutter 的布局系统中&#xff0c;LayoutBuilder 是一个强大的组件&#xff0c;它可以根据父容器的约束…

家政预约小程序12用户登录

目录 1 创建全局变量2 创建页面3 搭建页面4 实现登录逻辑总结 在小程序中&#xff0c;登录是一个常见的场景。比如我们在小程序预约或者购买时&#xff0c;通常要求用户先登录后购买。如果使用传统方案&#xff0c;登录这个动作其实最终的目的是为了获取用户的openid。而使用低…

Python学习圣经:从0到1,精通Python使用

尼恩&#xff1a;LLM大模型学习圣经PDF的起源 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;经常性的指导小伙伴们改造简历。 经过尼恩的改造之后&#xff0c;很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#x…

【智能体】文心智能体大赛第二季持续进行中,一起在智能体的海洋里发挥你的创意吧

目录 背景作文小助手AI迅哥问答程序员黄历助手比赛时间第二期赛题丰厚奖品评选说明获奖智能体推荐文章 背景 AI应用&#xff08;智能体&#xff09;&#xff0c;持续火热&#xff0c;一句话就能创建一个有趣、好玩的应用。 可以说一分钟内就能创建一个有创意的智能体。 看大多…

Linux网络-自定义协议、序列化和反序列化、网络计算服务器的实现和Windows端客户端

文章目录 前言一、自定义协议传结构体对象 序列化和反序列化什么是序列化&#xff1f;反序列化 二、计算器服务端&#xff08;线程池版本&#xff09;1.main.cc2.Socket.hpp3.protocol.hpp4.Calculator.hpp5.serverCal.hpp6.threadPool.hpp7.Task.hpp8. log.hpp 客户端Windows客…

我有点想用JDK17了

大家好呀&#xff0c;我是summo&#xff0c;JDK版本升级的非常快&#xff0c;现在已经到JDK20了。JDK版本虽多&#xff0c;但应用最广泛的还得是JDK8&#xff0c;正所谓“他发任他发&#xff0c;我用Java8”。 其实我也不太想升级JDK版本&#xff0c;感觉投入高&#xff0c;收…