【第15届蓝桥杯C++青少组中/高级组选拔赛(STEMA)2023年12月17日真题】

2024-02-08 08:52

本文主要是介绍【第15届蓝桥杯C++青少组中/高级组选拔赛(STEMA)2023年12月17日真题】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第15届蓝桥杯C++青少组中/高级组选拔赛(STEMA)2023年12月17日真题
一、单选题
第 1 题 单选题
定义字符串 string a = “Hello C++”,下列选项可以获取到字符 ‘C’ 的是( )。
A.a[7]
B.a[6]
C.a[5]
D.a[4]

答案 B

第 2 题 单选题
下列选项中数值与其它项不同的是( )。
A.(1234)5
B.(302)8
C.(11000100)2
D.(c2)16

答案 C

第 3 题 单选题
定义变量 int i = 0, a,执行表达式 a = --i 后,i 和 a 的值分别是( )。
A.-1、0
B.0、-1
C.-1、-1
D.0、0

答案 C

第 4 题 单选题
定义数组 int a[10] = {4, 6, 1, 3, 8, 7, 2, 9, 0, 5},那么 *(a + 5) 的值是( )。
A.7
B.8
C.2
D.9

答案A

第 5 题 单选题
执行以下程序,输出的结果是( )。

int func( int x, int y, int z )
{if( x == 1 || y == 1 || z == 1 ) return 1;if( x < y && x < z )return func( x, y - 1, z ) + func( x, y, z - 1 ); if( y < x && y < z )return func( x - 1, y, z ) + func( x, y, z - 1 );return func( x - 1, y, z ) + func( x, y - 1, z );
}
int main()
{cout << func( 3, 3, 2 );return 0;
}

A.5
B.6
C.7
D.8

答案 B

二、编程题
第 6 题 问答题
求和
题目描述:
给定 n 个整数,请计算出所有大于等于 10 的整数之和。
例如:n = 5,5 个整数分别为 10、20、4、30、9,其中大于等于 10 的整数有 10、20、30,它们的和为 60(10 + 20 + 30)。

输入描述:
共两行
第一行输入一个整数 n(1≤n≤1000)
第二行输入 n 个整数 Pi(1≤Pi≤100),整数之间以一个空格隔开输出描述:输出一个整数,表示所有大于等于 10 的整数之和

样例输入:
5
10 20 4 30 9

样例输出:
60

参考答案:

#include <bits/stdc++.h>
using namespace std;
int main() {int n, s = 0;cin >> n;for (int i = 1, x; i <= n; i++) {cin >> x;if (x >= 10)s += x;}cout << s;return 0;
}

第 7 题 问答题
数位和为偶数的数
提示信息:
偶数:能被 2 整除的数。
数位和:一个整数中所有数位上的数字之和。
例如:整数 123,数位和是 6(1 + 2 + 3)。

题目描述:
给定一个整数 n,请找出 1 到 n 之间(包含 1 和 n)所有数位和为偶数的整数。
例如:n = 15,1 到 15 之间的整数为:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15;数位和依次为:1、2、3、4、5、6、7、8、9、1、2、3、4、5、6;
数位和为偶数的是:2、4、6、8、11、13、15。

输入描述:
输入一个整数 n(2≤n≤1000)

输出描述:
一行输出若干个整数,表示 1 到 n 之间(包含 1 和 n)所有数位和为偶数的数,并按照从小到大的顺序依次输出,整数之间以一个空格隔开

样例输入:
15

样例输出:
2 4 6 8 11 13 15

参考答案:

#include <bits/stdc++.h>
using namespace std;
int main() {int n;cin >> n;for (int i = 1, x, y; i <= n; i++) {x = i;y = 0;while (x) {y += x % 10;x /= 10;}if (y % 2 == 0)cout << i << " ";}return 0;
}

第 8 题 问答题
填涂颜色
题目描述:
给定一个由 n 行 m 列的小方格组成的矩阵图形,接下来对该图形进行如下操作:1、先选择其中 x 行,将其填成黄色;2、再选择其中 y 列,将其填成黄色;填色完成后,请统计出有多少个小方格未被填色。
例如:矩阵图形由 4 行 5 列的小方格组成,先选择第 2、4 行将其填色,再选择第 1、3、5 列将其填色。
在这里插入图片描述

填色完成后,有 4 个小方格未被填色。
输入描述:共三行
第一行输入 4 个整数 n,m,x,y,分别表示矩阵的行数和列数以及选择填色的行数和列数 (1≤x≤n≤10000,1≤y≤m≤10000),整数之间以一个空格隔开
第二行输入 x 个不同的整数(1≤整数≤n),表示被填色的行号,整数之间以一个空格隔开
第三行输入 y 个不同的整数(1≤整数≤m),表示被填色的列号,整数之间以一个空格隔开
输出描述:
输出一个整数,表示填色完成后未被填色的小方格数量

样例输入:
4 5 2 3
2 4
1 3 5

样例输出:
4

参考答案:

#include <bits/stdc++.h>
using namespace std;
const int N = 10002;
int col[N], row[N];
int main() {int n, m, x, y;cin >> n >> m >> x >> y;int c = 0, r = 0;for (int i = 1, a; i <= x; i++) {cin >> a;col[a]++;if (col[a] == 1)c++;}for (int i = 1, a; i <= y; i++) {cin >> a;row[a]++;if (row[a] == 1)r++;}cout << n * m - (c * m + r * n - c * r);return 0;
}

第 9 题 问答题
外观数列
提示信息:
外观数列是一个整数序列,给定该数列的第一项数据之后,从第二项开始,每一项都是对前一项数据的描述。
例如:
给定外观数列的第一项为 1;
接下来第二项是对第一项数据的描述,即“一个 1”,记作 11;
第三项是对第二项数据的描述,即“两个 1”,记作 21;
第四项是对第三项数据的描述,即“一个 2,一个 1”,记作 1211;
第五项是对第四项数据的描述,即“一个 1,一个 2,两个 1”,记作 111221;以此类推…
题目描述:
给定外观数列的第一项 x 以及一个整数 n,请计算出该外观数列第 n 项的值。
例如:x = 2,n = 3,外观数列为:
2
12
1112
3112
132112

外观数列第 3 项为 1112。
输入描述:
输入两个整数 x(1≤x≤100)和 n(1≤n≤30)
输出描述:
输出一个整数,表示外观数列第 n 项的值

样例输入:
2 3

样例输出:
1112

参考答案:

#include <bits/stdc++.h>
using namespace std;
char x[10000], y[10000];
int main() {int n, lx, t, k;cin >> x >> n;lx = strlen(x);for (int i = 1; i < n; i++) {t = 1, k = 0;for (int i = 1; i <= lx; i++) {if (x[i] != x[i - 1]) {y[k] = t + '0';y[k + 1] = x[i - 1];k += 2;t = 1;} else {t++;}}lx = k;memcpy(x, y, sizeof(y));memset(y, 0, sizeof(y));}cout << x;return 0;
}

第 10 题 问答题
删除数字
题目描述:
老师在黑板上写了一个不超过 500 位的正整数 n(1≤n<10500),要求同学们删除其中任意 k 个数字, 剩余数字的顺序不变,希望得到的数最大。
例如:n = 69134,k = 2,从 69134 中删除 2 个数字,将第一位 6 和第三位 1 删除,得到的新数 934 是最大的。

输入描述:
输入两个整数 n 和 k(1≤n<10500,0≤k<n的位数),整数之间以一个空格隔开
输出描述:
输出一个整数,表示删除 k 个数字后,得到的最大数

样例输入:
69134 2

样例输出:
934
参考答案:

#include <bits/stdc++.h>
using namespace std;
string n;
int main() {int k;cin >> n >> k;while (k--) {int i, ln = n.size();for (i = 1; i < ln; i++) {if (n[i] > n[i - 1]) {n.erase(i - 1, 1);break;}}if (i == ln)n.erase(ln - 1, 1);}cout << n;return 0;
}

这篇关于【第15届蓝桥杯C++青少组中/高级组选拔赛(STEMA)2023年12月17日真题】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/690522

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二