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

  • 4
  • 0
  • 约1.19万字
  • 约 13页
  • 2026-03-03 发布于宁夏
  • 举报

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

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

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

1.下面关于链表和数组的描述,错误的是()。

A.数组大小固定,链表大小可动态调整。

B.数组支持随机访问,链表只能顺序访问。

C.存储相同数目的整数,数组比链表所需的内存多。

D.数组插入和删除元素效率低,链表插入和删除元素效率高。

答案:C。

解析:存储相同数目的整数的时候,数组用的内存应该是更少的,因为数组不需

要记录下一个值的地址。

2.通过()操作,能完成在双向循环链表结点p之后插入结点s的功能(其

中next域为结点的直接后继,prev域为结点的直接前驱)。

答案:D。

解析:A选项最后一句,此时p-next已经变成了s,所以错了。

B选项最后一句,此时p-next已经变成了s,所以错了。

C选项最后一句,应该是s-next-prev=s。

3.对下面两个函数,说法错误的是()。

intsumA(intn){

intres=0;

for(inti=1;i=n;i++){

res+=i;

}

returnres;

}

intsumB(intn){

if(n==1)

return1;

intres=n+sumB(n-1);

returnres;

}

答案:C。

解析:sumA函数是递推,sumB函数是递归,两个函数都是求的1~n的和,两个

函数的时间复杂度基本一致,都是O(n)。

4.有如下函数fun,则fun(20,12)的返回值为()。

intfun(inta,intb){

if(a%b==0)

returnb;

else

returnfun(b,a%b);

}

答案:C。

解析:函数为辗转相除求两数的最大公约数,结果为4,如果没有看出函数作用,

也可以手动模拟递归过程。

5.下述代码实现素数表的埃拉托斯特尼筛法,筛选出所有小于等于n的素数,则

横线上应填的最佳代码是()。

voidsieve_Eratosthenes(intn){

vectorboolis_prime(n+1,true);

vectorintprimes;

for(inti=2;i*i=n;i++){

if(is_prime[i]){

primes.push_back(i);

________________________________{//在此处填入代码。

is_prime[j]=false;

}

}

}

for(inti=sqrt(n)+1;i=n;i++){

if(is_prime[i]){

primes.push_back(i);

}

}

returnprimes;

}

答案:C。

解析:第六行判断当前的i是质数,所以i的倍数一定不是质数,这里要枚举i

的所有的倍数。

6.下述代码实现素数表的线性筛法,筛选出所有小于等于n的素数,则横线上应

填的代码是()。

vectorintsieve_linear(intn){

vectorboolis_prime(n+1,true);

vectorintprimes;

for(inti=2;i=n/2;i++){

if(is_prime[i])

primes.push_back(i);

________________________________{//在此处填入代码。

is_prime[i*primes[j]]=0;

if(i

文档评论(0)

1亿VIP精品文档

相关文档