2026年9月GESP编程能力认证C++等级考试七级真题(含答案)_第1页
2026年9月GESP编程能力认证C++等级考试七级真题(含答案)_第2页
2026年9月GESP编程能力认证C++等级考试七级真题(含答案)_第3页
2026年9月GESP编程能力认证C++等级考试七级真题(含答案)_第4页
2026年9月GESP编程能力认证C++等级考试七级真题(含答案)_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年9月GESP编程能力认证C++等级考试七级真题(含答案)一、单选题(每题2分,共30分)。1.下列C++代码的输出结果是()。#include<iostream>usingnamespacestd;intmain(){inta=5,b=3;cout<<(a&b)+(a|b)<<endl;return0;}A.6B.7C.8D.9答案:C。2.使用cmath或math.h中的数学库函数,下列说法中正确的是()。A.pow(2,3)的返回值类型为intB.sin(30)的参数30表示30度C.sqrt(4)的返回值类型为intD.log(1)的返回值为0.0,且类型为double。答案:D。3.有4个字符,出现次数分别为1、2、3、4。构造哈夫曼树后,出现次数为1的字符的哈夫曼编码长度为()。A.1B.2C.3D.4答案:C。4.从4×5个点连接成的网格的左上角走到右下角,每次只能向右或向下移动,不同的路径共有()条。A.20B.35C.70D.126答案:B。5.在含有n个结点的二叉排序树中查找一个元素,平均时间复杂度和最坏时间复杂度分别为()。A.O(logn),O(n)B.O(n),O(logn)C.O(logn),O(logn)D.O(1),O(n)答案:A。6.有4堆石子,数量分别为1、2、3、4。每次可以合并相邻两堆,合并代价为两堆石子数之和。将所有石子合并成一堆的最小总代价为()。A.17B.19C.20D.23答案:B。7.在无权图中,使用BFS从起点开始遍历,并在访问由结点u扩展的相邻结点v时记录dist[v]=dist[u]+1,且起点的dist为0,则最终dist[v]表示的是()。A.起点到结点v的最少边数B.结点v的度数C.从起点到结点v的路径上经过的最大边权D.包含结点v的连通块大小答案:A。8.在二维网格上实现泛洪填充时,为了防止递归层数过深,最适合的非递归实现方式是()。A.使用哈希表记录每个格子被访问的次数B.使用快速排序预处理网格C.使用二分查找定位边界D.使用队列实现BFS或使用显式栈模拟DFS答案:D。9.关于哈希表,下列说法正确的是()。A.只要哈希函数选择合适,就可以完全避免冲突。B.在链地址法中,查找一个元素的时间复杂度一定为O(1)。C.开放定址法发生冲突后,会在表内寻找下一个可用位置。D.哈希表的查找速度与表中元素个数无关答案:C。10.下列C++代码的输出结果是()。#include<iostream>usingnamespacestd;voidinc(int&x){x++;}intmain(){inta=3;inc(a);cout<<a;return0;}A.3B.4C.5D.编译错误答案:B。11.用动态规划求两个序列s1和s2的最长公共子序列长度,若dp[i][j]表示s1前i个元素与s2前j个元素的LCS长度。当s1[i-1]=s2[j-1]时,正确的状态转移是()。A.dp[i][j]=dp[i-1][j-1]+1B.dp[i][j]=max(dp[i-1][j],dp[i][j-1])C.dp[i][j]=dp[i-1][j]+1D.dp[i][j]=dp[i][j-1]答案:A。12.下列代码是一维数组优化0/1背包的核心片段,执行后dp[8]的输出结果是()。#include<iostream>#include<algorithm>usingnamespacestd;intmain(){intw=3,v=5,W=8;intdp[9]={0};for(intc=W;c>=w;c--)dp[c]=max(dp[c],dp[c-w]+v);cout<<dp[8]<<endl;return0;}A.0B.1C.3D.5答案:D。13.若要求排序后相等元素的相对顺序保持不变,下列排序算法中最不适宜使用的是()。A.冒泡排序B.插入排序C.归并排序D.快速排序答案:D。14.下列代码片段的时间复杂度为()。longlongs=0;for(inti=1;i<=n;i++)for(intj=1;j<=n;j+=i)s+=i+j;A.O(n)B.O(nlogn)C.O(n²)D.答案:B。15.已知inta[6]={1,3,5,7,9,11};int*p=a+1;,则表达式*(p+3)的值是()。A.5B.7C.9D.11答案:C。二、判断题(每题2分,共20分)。16.使用cmath或math.h中的函数,表达式exp(0)的结果值为1.0,且类型为double。()。答案:正确。17.采用开放定址法处理冲突的哈希表中,删除一个元素后可以直接将该位置置空,不会影响后续查找。()。答案:错误。18.在哈夫曼树中,出现次数更多的叶子结点,其深度总是更小。()。答案:错误。19.在一个有向图中,所有顶点的入度之和总是等于所有顶点的出度之和。()。答案:正确。20.广度优先搜索通常借助队列实现,深度优先搜索通常借助栈或递归实现。()。答案:正确。21.快速排序的平均时间复杂度为O(nlogn),最坏时间复杂度也为O(nlogn)。()。答案:错误。22.为解决0/1背包问题,使用一维数组优化时,内层容量循环应从大到小枚举。()。答案:正确。23.使用邻接表存储图时,遍历某个顶点的所有邻边所需时间与图中顶点数成正比。()。答案:错误。24.在按层序从1开始对结点编号的完全二叉树中,编号为i(i>1)的结点的父结点编号为[i/2]。答案:正确。25.在定义了数组intarr[10];后,表达式arr和表达式&arr[0]总是等价的。()。答案:错误。三、编程题(每题25分,共50分)。26.试题名称:必经之路。时间限制:1.0s。内存限制:512.0MB。题目描述:给定一张有n个结点m条边的有向图G,G中的结点依次以1,2,…,n编号。第i条边(1≤i≤m)从结点ui指向结点vi。G中任一入度为0的结点可以作为合法起点,任一出度为0的结点可以作为合法终点。如果G中所有可能的从合法起点到合法终点的路径都会经过结点u,则称u是必经点。注意必经点可以为合法起点或合法终点。请你求出G中所有必经点的编号。例如,在下图中合法起点有点1与点2,合法终点有点7与点8。所有合法起点到合法终点的路径为:因此必经点有两个,编号分别为4,5。输入格式:第一行,两个正整数n,m,表示有向图G中的结点数与边数。接下来m行,每行两个正整数ui,vi,表示一条从结点ui指向结点vi的有向边。保证G中至少有一个合法起点,至少有一个合法终点,且至少存在一条从一个合法起点到一个合法终点路径,同时不存在孤立点(即出度和入度都为0的点)。输出格式:第一行,一个整数,表示必经点的数量k。如果存在必经点,则第二行从小到大输出G中所有必经点的编号。输入样例1:89132334455667682457输出样例1:245输入样例2:89132334455667682547输出样例2:0数据范围:对于40%的测试点,保证1≤n≤100,1≤m≤200。对于所有测试点,保证1≤n≤1000,1≤m≤2000。保证G中至少有一个合法起点,至少有一个合法终点,且至少存在一条从一个合法起点到一个合法终点路径,同时不存在孤立点(即出度和入度都为0的点)。参考程序:#include<cstdio>#include<algorithm>usingnamespacestd;constintN=1005;constintE=2005;intn,m;inth[N],to[E],nx[E],et;intid[N],od[N];boolvis[N];intq[N],ql,qr;intans[N],cnt;boolchk(intban){ql=qr=0;for(inti=1;i<=n;i++){vis[i]=(i==ban);if(!vis[i]&&!id[i]){q[++qr]=i;vis[i]=1;}}while(ql<qr){intu=q[++ql];for(inti=h[u];i;i=nx[i]){intv=to[i];if(vis[v])continue;if(!od[v])return0;q[++qr]=v;vis[v]=1;}}return1;}intmain(){scanf("%d%d",&n,&m);for(inti=1;i<=m;i++){intu,v;scanf("%d%d",&u,&v);to[++et]=v;nx[et]=h[u];h[u]=et;od[u]++;id[v]++;}for(inti=1;i<=n;i++)if(chk(i))ans[++cnt]=i;printf("%d\n",cnt);for(inti=1;i<=cnt;i++)printf("%d%c",ans[i],"\n"[i==cnt]);return0;}27.试题名称:括号序列。时间限制:1.0s。内存限制:512.0MB。题目描述:对于字符串S与T,如果从S中删除任意多个字符可以得到T,那么T是S的子序列。换言之,T是选取S中的若干字符按下标顺序连接而成的。两个子序列不同当且仅当所选取的下标不同。例如sun是sequence的子序列,因为从sequence中删除eq、e和ce可以得到sun;sequence有28个不同的子序列,其中有空字符串,也有三个不同的子序列e,因为sequence的第2,5,8个字符都为e,分别保留这三个字符得到的子序列是不同的。对于字符串S,如果S满足以下条件那么S是合法括号序列:(1)S是空字符串,或者:(2)S可由(、合法括号序列、)三者连接得到,或者:(3)S可由两个合法括号序列连接得到。例如()、()()、(())和(()())都是合法括号序列。但是(()、)(不是合法括号序列。给定一个长度为n的仅包含(与)的字符串S。请你求出S所有2n个子序列中有多少个合法括号序列。由于答案可能很大,请你输出答案对109取模的结果。例如,S为))(()(时共有3个子序列是合法括号序列,分别为空字符串与两个不同的子序列()。输入格式:第一行,一个正整数n,表示字符串S的长度。第二行,长度为n的仅包含(与)的字符串S。输出格式:输出一行,一个整数,表示S的合法括号子序列的数量对109取模的结果。输入样例1:6))(()(输出样例1:3输入样例2:34((((((((((((((((()))))))))))))))))输出样例2:33360622

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论