2024年3月GESP编程能力认证C++等级考试五级真题(含答案和解析).docxVIP

2024年3月GESP编程能力认证C++等级考试五级真题(含答案和解析).docx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2024年3月GESP编程能力认证C++等级考试五级真题(含答案和解析)

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

1.唯一分解定理描述的内容是()。

A.任意整数都可以分解为素数的乘积

B.每个合数都可以唯一分解为一系列素数的乘积

C.两个不同的整数可以分解为相同的素数乘积

D.以上都不对

答案:B。

解析:任何一个大于1的整数n都可以分解成若干个素因数的连乘积,若n为素数,则乘积为n本身,若n为合数,则乘积包含若干素数的乘积。

2.贪心算法的核心思想是()。

A.在每一步选择中都做当前状态下的最优选择

B.在每一步选择中都选择局部最优解

C.在每一步选择中都选择全局最优解

D.以上都对

答案:A。

解析:贪心算法核心思想是选择当前状态下的最佳选择,动态规划的核心思想应该是“最优子结构”和“重叠子问题”。

3.下面的C++代码片段用于计算阶乘。请在横线处填入(),实现正确的阶乘计算。

A.returnn*factorial(n-1);

B.returnfactorial(n-1)/n;

C.returnn*factorial(n);

D.returnfactorial(n/2)*factorial(n/2);

答案:A。

解析:由递归式如下图,if(n=2)returnfact[n-1]*n。

4.下面的代码片段用于在双向链表中删除一个节点。请在横线处填入(),使其能正确实现相应功能。

A.if(current-next!=nullptr)current-next-prev=current-prev;

B.current-prev-next=current-next;

C.deletecurrent-next;

D.current-prev=current-next;

答案:B。

解析:如下。

双链表current的删除需要处理两个指针。

current的前驱的next指针更新到prev的后继。

current的后继的prev指针更新到current的前驱。

空白处需要填写的是,将current的前驱的next更新为current的next。

A更新的是current的后继显然不对,C是删除了current的后继,D更新的是current的前驱,而不是前驱的next。

5.辗转相除法也被称为()。

A.高斯消元法

B.费马定理

C.欧几里德算法

D.牛顿迭代法

答案:C。

解析:高斯消元法,是线性代数中求解线性方程组的一种求解方法。

费马定理,分为费马小定理和费马大定理,是初等数论中的两个重要原理。

欧几里得算法,又称辗转相除法,是求解最大公约数的一种算法。另一种算法为更相减损法,是出自《九章算术》,是中国古代提出的一种最大公约数的算法。

牛顿迭代法,又称牛顿-拉夫逊(拉弗森)方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。

6.下面的代码片段用于计算斐波那契数列。该代码的时间复杂度是()。

intfibonacci(intn){

if(n=1){

returnn;

}else{

returnfibonacci(n-1)+fibonacci(n-2);

}

}

A.O(1)

B.O(n)

C.O(2n)

D.O(logn)

答案:C。

解析:如下。

斐波那契递推式为:f(n)=f(n-1)+f(n-2),结合递归树,以最坏的情况考虑,f(n)每次减少1的问题规模需要变为两个分支,记为f(n)=21f(n-1)=22f(n-2)=…=2n-1f(1)=2n-1,因此复杂度为O(2n)。

7.下面的代码片段用于将两个高精度整数进行相加。请在横线处填入(),使其能正确实现相应功能。

A.result=to_string(sum%10)+result;

B.result=to_string(carry%10)+result;

C.result=to_string(sum/10)+result;

D.result=to_string(sum%10+carry)+result;

答案:A。

解析:如下。

string下标0的位置对应num1和num2的最高位,模拟加法从个位开始,第4行的i,j两个指针指向了num1和num2的数组最高下标,对应个位。

第5行自低位向高位模拟加法计算,同时保证了:只要有其中一个数参与加法或者最终产生更高进位carry就执行技法。

第6,7行将字符转换为数字,同时若有一方已超过位数,补0参与加法运算。

第8行为模拟计算,第9行为处理进位,第10行处理当前位

您可能关注的文档

文档评论(0)

资格考试 + 关注
实名认证
文档贡献者

提供各类资格考试试卷/真题

1亿VIP精品文档

相关文档