2024年06月CCF-GESP编程能力等级认证C++编程七级真题解析

news2024/11/14 20:10:05

本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。

一、单选题(每题 2 分,共 30 分)

第 1 题

下列C++代码的输出结果是( )。

#include <iostream>
#include <cmath>
using namespace std;
int main() {
	cout << sin(3.1415926 / 2);
	return 0;
}

A. 0
B. 1
C. 0.5
D. 0.7071

答案:B

第 2 题

对于如下图的二叉树,说法正确的是( )。
在这里插入图片描述

A. 先序遍历是 132 。
B. 中序遍历是 123 。
C. 后序遍历是 312 。
D. 先序遍历和后序遍历正好是相反的。

答案:D

第 3 题

已知两个序列s1= {1,3,4,5,6,7,7,8,1} 、s2= {3,5,7,4,8,2,9,5,1} ,则它们的最长公共子序列是()。
A. {3,5,7,8,1}
B. {3,4,5,7,8}
C. {5,7,8}
D. {3,5,7,9,1}

答案:A

第 4 题

关于序列 {2,7,1,5,6,4,3,8,9} ,以下说法错误的是( )。
A. {2,5,6,8,9} 是它的最长上升子序列
B. {1,5,6,8,9} 是它的最长上升子序列
C. {7,5,4,3} 是它的最长下降子序列
D. {1,5,6,8,9} 是它的唯一最长上升子序列

答案:D

第 5 题

关于图的深度优先搜索和广度优先搜索,下列说法错误的是( )。
A. 二叉树是也是一种图。
B. 二叉树的前序遍历和后序遍历都是深度优先搜索的一种。
C. 深度优先搜索可以从任意根节点开始。
D. 二叉树的后序遍历也是广度优先搜索的一种。

答案:D

第 6 题

对于如下二叉树,下面访问顺序说法错误的是( )。
在这里插入图片描述

A. HDEBFIGCA不是它的后序遍历序列
B. ABCDEFGHI是它的广度优先遍历序列
C. ABDHECFGI是它的深度优先遍历序列
D. ABDHECFGI是它的先序遍历序列

答案:A

第 7 题

以下哪个方案不能合理解决或缓解哈希表冲突( )。
A. 丢弃发生冲突的新元素。
B. 在每个哈希表项处,使用不同的哈希函数再建立一个哈希表,管理该表项的冲突元素。
C. 在每个哈希表项处,建立二叉排序树,管理该表项的冲突元素。
D. 使用不同的哈希函数建立额外的哈希表,用来管理所有发生冲突的元素。

答案:A

第 8 题

在C++中,关于运算符&,下面说法正确的是( )。
A. 2 & 3 的结果是 true
B. 011 & 111 的结果是 3
C. 3 & 6 的结果是 2
D. 110 & 101 的结果是 4

答案:C

第 9 题

下面关于图的说法正确的是( )。
A. 在无向图中,环是指至少包含三个不同顶点,并且第一个顶点和最后一个顶点是相同的路径。
B. 在有向图中,环是指一个顶点经过至少另一个顶点到自身的路径。
C. 在有向图中,如果任意两个顶点之间都存在一条边,则这个图一定是强连通图。
D. 在有向图中,所有顶点的入度和出度的总和就是图的边数的两倍。

答案:D

第 10 题

图的存储和遍历算法,下面说法错误的是( )。
A. 图的深度优先搜索和广度优先搜索对有向图和无向图都适用。
B. 图的深度优先搜索和二叉树的先序遍历道理是不一样的。
C. 图的深度优先搜索需要借助栈来完成。
D. 邻接表中,顶点 对应链表中的边结点数目正好是顶点 的度。

答案:B

第 11 题

如下图所示的邻接表结构,表示的是下列哪个选项中的图?
在这里插入图片描述

A.
在这里插入图片描述

B.
在这里插入图片描述

C.
在这里插入图片描述

D.
在这里插入图片描述

答案:C

第 12 题

如下图所示的邻接矩阵(inf表示无穷大),表示的是下列哪个选项中的图?
在这里插入图片描述

A.
在这里插入图片描述

B.
在这里插入图片描述

C.
在这里插入图片描述

D.
在这里插入图片描述

答案:A

第 13 题

下面程序的输出为( )。

#include <iostream>
using namespace std;
int fib(int n) {
	if (n <= 1)
		return n;
	return fib(n - 1) + fib(n - 2);
}
int main() {
	cout << fib(6) << endl;
	return 0;
}

A. 5
B. 8
C. 13
D. 无法正常结束。

答案:B

第 14 题

下面 count_triple 函数的时间复杂度为( )。

int count_triple(int n) {
	int cnt = 0;
	for (int a = 1; a <= n; a++)
		for (int b = a; a + b <= n; b++) {
			int c = sqrt(a * a + b * b);
			if (a + b + c > n)
				break;
			if (a * a + b * b == c * c)
				cnt++;
		}
	return cnt;
}

A. O ( n ) O(n) O(n)
B. O ( n 2 ) O(n^2) O(n2)
C. O ( n 3 ) O(n^3) O(n3)
D. O ( n 4 ) O(n^4) O(n4)

答案:B

第 15 题

下列选项中,哪个可能是下图的深度优先遍历序列( )。
在这里插入图片描述

A. 1, 3, 7, 5, 4, 2, 6, 8, 9
B. 9, 4, 2, 1, 3, 5, 7, 6, 8
C. 1, 3, 4, 2, 7, 6, 8, 9, 5
D. 9, 7, 6, 8, 4, 2, 1, 5, 3

答案:C

二、判断题(每题 2 分,共 20 分)

第 16 题

C++语言中,表达式 6 & 5 的结果类型为 int 、值为 1 。

答案:错误

第 17 题

冒泡排序是稳定的排序算法。

答案:正确

第 18 题

唯一分解定理(算术基本定理)指出,每个大于1的自然数都可以唯一地分解成若干个素数的乘积。因此,我们可以很容易的对给定的自然数 n 进行质因数分解,时间复杂度仅为 O ( l o g ( n ) ) O(log(n)) O(log(n))

答案:错误

第 19 题

C++语言中,可以为同一个类定义多个构造函数。

答案:正确

第 20 题

使用 math.h 或 cmath 头文件中的对数函数,表达式 log(128) 的结果类型为 double 、值约为 7.0 。

答案:错误

第 21 题

一颗 N 层的二叉树,至少有 2 N − 1 2^{N-1} 2N1 个节点。

答案:错误

第 22 题

非连通图不能使用广度优先搜索算法进行遍历。

答案:错误

第 23 题

现使用有 N 个表项的哈希表,从 M 个元素中进行查找。该哈希表为解决哈希函数冲突,为每个表项处建立单链表存储冲突元素。其查找操作的最坏情况时间复杂度为 O ( M ) O(M) O(M)

答案:正确

第 24 题

动态规划有递推实现和递归实现,对于很多问题,通过记录子问题的解,两种实现的时间复杂度是相同的。

答案:正确

第 25 题

泛洪算法的递归方法容易造成溢出,因此大的二维地图算法中,一般不用递归方法。

答案:正确

三、编程题(每题 25 分,共 50 分)

第 26 题

试题名称:黑白翻转
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有一棵包含 n n n 个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。小杨认为一棵树是美丽树当且仅当在删除所有白色节点之后,剩余节点仍然组成一棵树。
小杨每次操作可以选择一个白色节点将它的颜色变为黑色,他想知道自己最少要执行多少次操作可以使得这棵树变为美丽树。
输入格式
第一行包含一个正整数 n n n,代表树的节点数。
第二行包含 n n n 个非负整数 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an,其中如果 a i = 0 a_i=0 ai=0,则节点 i i i 的颜色为白色,否则为黑色。
之后 n − 1 n-1 n1 行,每行包含两个正整数 x i , y i x_i,y_i xi,yi,代表存在一条连接节点 x i x_i xi y i y_i yi 的边。
输出格式
输出一个整数,代表最少执行的操作次数。
样例1

5
0 1 0 1 0
1 2
1 3
3 4
3 5
2

样例解释
将节点 1 1 1 3 3 3 变为黑色即可使这棵树变为美丽树,此时删除白色节点 5 5 5,剩余黑色节点仍然组成一棵树。
数据范围
在这里插入图片描述

对于全部数据,保证有 1 ≤ n ≤ 1 0 5 , 0 ≤ a i ≤ 1 1≤n≤10^5,0≤a_i≤1 1n105,0ai1
参考程序

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
vector<int> g[N];
int col[N],num[N];
int ans,sum;
void calc(int x,int fa){
	num[x]+=col[x];
	for(auto i:g[x]){
		if(i!=fa){
			calc(i,x);
			num[x]+=num[i];
		}
	}
}
void dfs(int x,int fa){
	int fl=0;
	if(num[x]!=sum&&num[x]!=0)fl=1;
	for(auto i:g[x]){
		if(i!=fa){
			dfs(i,x);
			if(num[i]!=0&&num[i]!=num[x]-col[x]){
				fl=1;
			}
		}
	}
	if(fl==1&&col[x]!=1)ans++;
}
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>col[i];
		sum+=col[i];
	}
	for(int i=1;i<n;i++){
		int u,v;
		cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	calc(1,0);
	dfs(1,0);
	cout<<ans<<"\n";
}

第 27 题

试题名称:区间乘积
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有一个包含 n n n 个正整数的序列 A = [ a 1 , a 2 , . . . , a n ] A=[a_1,a_2,...,a_n] A=[a1,a2,...,an]
小杨想知道有多少对 < l , r > ( 1 ≤ l ≤ r ≤ n ) <l,r>(1≤l≤r≤n) <l,r>(1lrn) 满足 a l × a l + 1 × . . . × a r a_l×a_{l+1}×...×a_r al×al+1×...×ar 为完全平方数。
一个正整数 x x x 为完全平方数当且仅当存在一个正整数 y y y 使得 x = y × y x=y×y x=y×y
输入格式
第一行包含一个正整数 n n n,代表正整数个数。
第二行包含 n n n 个正整数 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an,代表序列 A A A
输出格式
输出一个整数,代表满足要求的 < l , r > <l,r> <l,r> 数量。
样例1

5
3 2 4 3 2
2

样例解释
满足条件的 < l , r > <l,r> <l,r> < 3 , 3 > <3,3> <3,3> < 1 , 5 > <1,5> <1,5>
数据范围
在这里插入图片描述

对于全部数据,保证有 1 ≤ n ≤ 1 0 5 , 1 ≤ a i ≤ 30 1≤n≤10^5,1≤a_i≤30 1n105,1ai30
参考程序

#include<bits/stdc++.h>
using namespace std;
map<int,int> mp;
const int N = 1e5+10;
int calc(int x) {
	int res = 0;
	for (int i = 2; i * i <= x; i++) {
		if (x % i == 0) {
			while (x% i == 0){
				x/= i;
				res^=(1<<(i-1));
			}
		}
	}
	if (x != 1) {
		res^=(1<<(x-1));
	}
	return res;
}
int a[N];
int main(){
	int n;
	cin>>n;
	long long ans = 0;
	int pre = 0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		int res = calc(a[i]);
		pre^=res;
		if(pre==0)
			ans++;
		ans+=mp[pre];
		mp[pre]+=1;
	}
	cout<<ans<<"\n";
}

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

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

相关文章

SwiftUI 6.0(Xcode 16)新 PreviewModifier 协议让预览调试如虎添翼

概览 用 SwiftUI 框架开发过应用的小伙伴们都知道&#xff0c;SwiftUI 中的视图由各种属性和绑定“扑朔迷离”的缠绕在一起&#xff0c;自成体系。 想要在 Xcode 预览中泰然处之的调试 SwiftUI 视图有时并不是件容易的事。其中&#xff0c;最让人秃头码农们头疼的恐怕就要数如…

Spring Cloud Gateway 自定义断言以及过滤器

1.Spring Cloud gateway介绍 Spring Cloud Gateway 是一个基于 Spring Framework 和 Spring Boot 的 API 网关服务&#xff0c;它利用了 Spring WebFlux 来提供响应式非阻塞式Web请求处理能力。它的核心功能是路由&#xff0c;即根据请求的特定规则将请求转发到后端服务&#…

DP(1500-1700)(刷题)

1.状态机模型&#xff1a;https://codeforces.com/contest/1984/problem/C2 记一下max与min状态转移即可&#xff0c;下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef long long ll; ll a[200010],t,n; ll dp[200010][2];//dp[i][0]表示…

啊?现在不懂 AI ,相当于十年前不懂电脑?

最近有关萝卜快跑的新闻铺天盖地&#xff0c;一篇篇都在唱衰&#xff0c;好像千万滴滴师傅立马就要失业了一样。 还没等多久&#xff0c;在朋友圈看到这样一句话&#xff0c;“现在不懂 AI &#xff0c;相当于十年前不懂电脑”。 我想了许久&#xff0c;最终不得不承认这个事实…

深度学习入门——误差反向传播

要正确理解误差反向传播法&#xff0c;我个人认为有两种方法&#xff1a;一种是基于数学式&#xff1b;另一种是基于计算图&#xff08;computational graph&#xff09; 前者是比较常见的方法&#xff0c;机器学习相关的图书中多数都是以数学式为中心展开论述的。因为这种方法…

达梦数据库的系统视图v$sqltext

达梦数据库的系统视图v$sqltext 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$SQLTEXT 是一个系统视图&#xff0c;用于显示当前正在执行或最近执行的SQL语句的文本信息。这个视图对于监控和分析数据库中的SQL活动非常有用&#xff0c;尤其是在需要调试性…

【python】OpenCV—Coordinates Sorted Clockwise

文章目录 1、需求介绍2、算法实现3、完整代码 1、需求介绍 调用 opencv 库&#xff0c;绘制轮廓的矩形边框&#xff0c;坐标顺序为右下→左下→左上→右上&#xff0c;我们实现一下转化为熟悉的 左上→右上→右下→左下 形式 按照这样的顺序组织边界框坐标是执行透视转换或匹…

13. C++继承 | 详解 | 虚拟继承及底层实现

目录 1.定义 1.1继承的概念 1.2 继承的定义 2. 对象赋值转换 3. 继承中的作用域 a. 隐藏/重定义 (Hiding/Redefinition) b. 重载 (Overloading) c. 重写/覆盖 (Overriding) d. 编译报错 (Compilation Error) 4. 派生类的默认成员函数 构造 拷贝构造 运算符重载 析…

处理uniapp刷新后,点击返回按钮跳转到登录页的问题

在使用uniapp的原生返回的按钮时&#xff0c;如果没有刷新会正常返回到对应的页面&#xff0c;如果刷新后会在当前页反复横跳&#xff0c;或者跳转到登录页。那个时候我第一个想法时&#xff1a;使用浏览器的history.back()方法。因为浏览器刷新后还是可以通过右上角的返回按钮…

Vscode+Pyside6开发之虚拟环境配置以及错误解决

Pyside开发之虚拟环境配置以及错误解决 开发环境一、项目创建以及虚拟环境设置1.创建项目2. 新建py文件,新建虚拟环境3.激活虚拟环境二、项目位置改变pip命令报错1.删除原来的虚拟环境2. 产生包列表文件requirements.txt3.重新创建虚拟环境4.重新安装包文件5.其他错误开发环境…

操作系统 输入输出系统

输入输出系统 I/O系统的功能、模型和接口 功能 隐藏物理设备的细节&#xff1a;仅向上层进程提供少量的、抽象的读/写命令 与设备无关性&#xff1a;用户不仅可以使用抽象的I/O命令&#xff0c;还可使用抽象的逻辑设备名来使用设备 提高处理机和I/O设备的利用率&#xff1a;…

IDEA SpringBoot实现定时任务(保姆级教程,超详细!!!)

目录 1. 前言 2. 创建SpringBoot项目 3. Maven依赖引入 4. 创建定时任务 5. 问题&#xff1a;执行时间延迟和单线程执行 5.1 问题原因 5.2 解决方式 1. 前言 在现代化应用中&#xff0c;定时任务&#xff08;Scheduled Tasks&#xff09;是不可或缺的一部分&#xff…

pytorch学习(五)tensorboard使用

1. 创建环境 首先创建一个环境: conda create -n pytorch conda activate pytorch 然后安装tensorboard pip install tensorboard 安装opencv pip install opencv-python 2. 简单的案例 标量和图像的显示&#xff1a; 2.1标量实现的方法是add_scalar,第一个参数是给显…

Stable Diffusion:质量高画风清新细节丰富的二次元大模型二次元插图

今天和大家分享一个基于Pony模型训练的二次元模型&#xff1a;二次元插图。关于该模型有4个不同的分支版本。 1.5版本&#xff1a;loar模型&#xff0c;推荐底模型niji-动漫二次元4.5。 xl版本&#xff1a;SDXL模型版本 mix版本&#xff1a;光影减弱&#xff0c;减少SDXL版本…

21天学通C++:第十三、十四章节

第十三章&#xff1a;类型转换运算符 类型转换是一种机制&#xff0c;让程序员能够暂时或永久性改变编译器对对象的解释。注意&#xff0c;这并不意味着程序员改变了对象本身&#xff0c;而只是改变了对对象的解释。可改变对象解释方式的运算符称为类型转换运算符。 为何需要…

数据库端口LookUp功能:从数据库中获取并添加数据到XML

本文将为大家介绍如何使用知行之桥EDI系统数据库端口的Lookup功能&#xff0c;从数据库中获取数据&#xff0c;并添加进输入的XML中。 使用场景&#xff1a;期待以输入xml中的值为判断条件从数据库中获取数据&#xff0c;并添加进输入xml中。 例如&#xff1a;接收到包含采购…

Linux 06-01:简易shell编写

考虑一下这个与shell典型的互动&#xff1a;ls、ps 用下图的时间轴来表示事件的发生次序。其中时间从左向右。shell由标识为sh的方块代表&#xff0c;它随着时间的流逝从左向右移动。shell从用户读入字符串"ls"。shell建立一个新的进程&#xff0c;然后在那个进程中运…

Three.js 实战【2】—— 船模型海上场景渲染

停止了好久没有更新three这方面的文章了&#xff0c;从上两年还是vue2&#xff0c;一下子都换到vue3了&#xff0c;下面这些three都是基于vue3来进行开发的哈&#xff0c;先看一下这篇文章实现的效果哈。其中关于模型什么的资源都放在Git上了 初始化场景 安装three就直接通过n…

Java——集合(Queue)

1.Queue 接口的常用功能 除了基本的 Collection 操作外&#xff0c;队列还提供其他的插入、提取和检查操作。每个方法都存在 两种形式&#xff1a;一种抛出异常&#xff08;操作失败时&#xff09;&#xff0c;另一种返回一个特殊值&#xff08; null 或 false &#xff…

RPA鼠标按键使用技巧

RPA鼠标按键使用技巧 Mouse.MouseAuto.Action命令出错&#xff0c;调用的目标发生了异常&#xff0c;Exception in Mouse.Action元素不可用怎么解决 出现问题 1.想要实现的效果鼠标移动到录屏工具的小球上2.点击开始按钮开始录屏现象&#xff0c;鼠标没有移动痕迹&#xff0c…