GESP 2024年9月_C++五级试卷
从PDF导入:GESP 2024年9月_C++五级试卷
C++
180分钟
总分 100.0
27 题
试卷题目预览
第1题
中级
2.0分
单选
下面关于链表和数组的描述,错误的是( )。
第2题
中级
2.0分
单选
通过( )操作,能完成在双向循环链表结点p之后插入结点s的功能。
第3题
中级
2.0分
单选
对下面两个函数,说法错误的是( )。

第4题
中级
2.0分
单选
有如下函数fun,则fun(20, 12)的返回值为( )。

第5题
中级
2.0分
单选
下述代码实现素数表的埃拉托斯特尼筛法,筛选出所有小于等于n的素数,则横线上应填的最佳代码是( )。

第6题
中级
2.0分
单选
下述代码实现素数表的线性筛法,筛选出所有小于等于n的素数,则横线上应填的代码是( )。

第7题
中级
2.0分
单选
下面函数可以将n的所有质因数找出来,其时间复杂度是( )。

第8题
中级
2.0分
单选
现在用如下代码来计算x^n(n个x相乘),其时间复杂度为( )。

第9题
中级
2.0分
单选
假设快速排序算法的输入是一个长度为n的已排序数组,且该快速排序算法在分治过程总是选择第一个元素作为基准元素。下面选项( )描述的是在这种情况下的快速排序行为。
第10题
中级
2.0分
单选
考虑以下C++代码实现的归并排序算法,对长度为n的数组arr,调用函数merge_sort(a, 0, n-1),在排序过程中merge函数的递归调用次数大约是

第11题
中级
2.0分
单选
现在有n个人要过河,每只船最多载2人,船的承重为100kg。下列代码中,数组weight中保存有n个人的体重(单位为kg),已经按从小到大排好序,代码输出过河所

第12题
中级
2.0分
单选
关于分治算法,以下哪个说法正确?
第13题
中级
2.0分
单选
根据下述二分查找法,在排好序的数组1,3,6,9,17,31,39,52,61,79中查找数值31,循环while (left <= right)执行的次数为(

第14题
中级
2.0分
单选
以下关于高精度运算的说法错误的是( )。
第15题
中级
2.0分
单选
当n=7时,下面函数的返回值为( )。

第16题
中级
2.0分
判断
在操作系统中,需要对一组进程进行循环。每个进程被赋予一个时间片,当时间片用完时,CPU将切换到下一个进程。这种循环操作可以通过环形链表来实现。
第17题
中级
2.0分
判断
找出自然数n以内的所有质数,常用算法有埃拉托斯特尼(埃氏)筛法和线性筛法,其中线性筛法效率更高。
第18题
中级
2.0分
判断
唯一分解定理表明任何一个大于1的整数都可以唯一地分解为素数之和。
第19题
中级
2.0分
判断
贪心算法通过每一步选择局部最优解,从而一定能获得最优解。
第20题
中级
2.0分
判断
快速排序和归并排序的平均时间复杂度均为O(n log n),且都是稳定排序。
第21题
中级
2.0分
判断
插入排序的时间复杂度总是比快速排序低。
第22题
中级
2.0分
判断
引入分治策略往往可以提升算法效率。一方面,分治策略减少了操作数量;另一方面,分治后有利于系统的并行优化。
第23题
中级
2.0分
判断
二分查找要求被搜索的序列是有序的,否则无法保证正确性。
第24题
中级
2.0分
判断
在C++语言中,递归的实现方式通常会占用更多的栈空间,可能导致栈溢出。
第25题
中级
2.0分
判断
对于已经定义好的标准数学函数sin(x),应用程序中的语句y=sin(sin(x)); 是一种递归调用。
第26题
中级
25.0分
编程
小杨的武器
小杨有n种不同的武器,他对第i种武器的初始熟练度为ci。 小杨会依次参加m场战斗,每场战斗小杨只能且必须选择一种武器使用,假设小杨使用了第i种武器参加了第k场战斗,战斗前该武器的熟练度为s,则战斗后小杨对该武器的熟练度会变为s+ak。需要注意的是,ak可能是正数、0或负数,这意味着小杨参加战斗后对武器的熟练度可能会提高,也可能会不变,还有可能降低。 小杨想请你编写程序帮他计算出如何选择武器才能使得m场战斗后,自己对n种武器的熟练度的最大值尽可能大。
【输入格式】
第一行包含两个正整数n、m,含义如题面所示。 第二行包含n个正整数ci,代表小杨对武器的初始熟练度。 第三行包含m个正整数ak,代表每场战斗后武器熟练度的变化值。
【输出格式】
输出一个整数,代表m场战斗后小杨对n种武器的熟练度的最大值最大是多少。
【样例输入】 2 2 9 9 1 -1 【样例输出】 10 对于全部数据,保证有1<=n,m<=10^5,|ci|,|ak|<=10^4。
第27题
中级
25.0分
编程
挑战怪物
小杨正在和一个怪物战斗,怪物的血量为H,只有当怪物的血量恰好为0时小杨才能够成功击败怪物。 小杨有两种攻击怪物的方式: 1. 物理攻击。假设当前为小杨第k次使用物理攻击,则会对怪物造成2^(k-1)点伤害。 2. 魔法攻击。小杨选择任意一个质数p(p不能超过怪物当前血量),对怪物造成p点伤害。由于小杨并不擅长魔法,他只能使用至多一次魔法攻击。 小杨想知道自己能否击败怪物,如果能,小杨想知道自己最少需要多少次攻击。
【输入格式】
第一行包含一个正整数T,代表测试用例组数。 接下来是T组测试用例。对于每组测试用例,第一行包含一个正整数H,代表怪物血量。
【输出格式】
对于每组测试用例,如果小杨能够击败怪物,输出一个整数,代表小杨需要的最少攻击次数,如果不能击败怪物,输出-1。
【样例输入】 3 6 188 9999 【样例输出】 2 4 -1 对于全部数据,保证有1<=T<=10^5,1<=H<=10^5。