image

编辑人: 独留清风醉

calendar2025-06-15

message8

visits931

2023年12月CCF-GESP编程能力等级认证C++编程四级真题参考答案

一、单选题

1、下面有关函数参数的说法,正确的是(   )。

A、

函数参数传递时,主函数当中采用值传递方式将参数传递给子函数时,若子函数将参数值改变,主函数当中的参数值不变。

B、

函数参数传递时,主函数当中采用值传递方式将参数传递给子函数时,若子函数将参数值改变,主函数当中的参数值将随子函数一样改变而改变。

C、

函数参数传递时,主函数如果将参数的地址传递给子函数,若子函数将参数值改变,主函数当中的参数值将不改变。

D、

函数参数传递可以不满足子函数的参数个数要求。


2、下面C++代码执行后,输出的是(   )。

A、

chen

B、

c

C、

chen a dai

D、

dai


3、下面C++代码最后执行后输出是(   )。

A 1

B 2

C 3

D 4


4、下面C++代码执行后的结果是(   )。

A

B

C

D


5、下面C++代码执行后输出是(   )。

A、

1,2,3

B、

1

C、

2

D、

3


6、如果变量x的地址是0x6ffe14,下面C++代码执行以后输出的是(   )。

A、

0x6ffe11

B、

0x6ffe14

C、

0x6ffe18

D、

0x6ffe15


7、在C++中,执行下面代码后,输出的是(   )。

A、

400

B、

200

C、

20

D、

100


8、下列C++语句执行以后结果是true的是(   )。

A、

3&&false

B、

5&&2

C、

101&&000

D、

4&true


9、在如下的C++代码中实现了对字符串中出现的26个字母的个数统计,横线处应填入是(   )。

A、

alpha[i]=alpha[i-1]+1;

B、

alpha[i]=alpha[i]+1;

C、

alpha[i+1]=alpha[i]+1;

D、

alpha[i-1]=alpha[i]+1;


10、下面C++代码执行后生成的文件其字节数为(   )。

A、

10

B、

16

C、

40

D、

24


11、下列C++代码输入 1,2,3,4 ,执行后,将输出的是(   )。

A、

1#4#

B、

1#3#

C、

1#2#3#4#

D、

1#2#3#4


12、以下C++代码用于实现每个整数对应的因数,如输入 12 ,则输出 1 2 3 4 6 12 ;如输入 18 ,则输出 1 2 3 6 9 18 。横线处应填入代码是(   )。

A、

if(n%i==0)

B、

if(n/i==0)

C、

if(n%i!=0)

D、

if(n/i!=0)


13、某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。(   )(2023年12月C++四级)

A、

麦克风

B、

扬声器

C、

油量表

D、

传感器


14、现代计算机是指电子计算机,它所基于的是(   )体系结构。(2023年12月C++四级)

A 艾伦·图灵

B 冯·诺依曼

C 阿塔纳索夫

D 埃克特-莫克利


15、输入一个正整数N,想找出它所有相邻的因数对,比如,输入12,因数对有(1,2)、(2,3)、(3,4)。下面哪段代码找不到所有的因数对?(   )

A、

for(i=1;i<N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);

B、

for(i=2;i<N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);

C、

for(i=2;i<N/2;i++) if(!(N%(i-1)) && !(N%i)) printf("(%d,%d)\n", i-1, i);

D、

for(i=1;i<N/2;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);


二、判断题

16、C++的内置函数 sort() 支持数组的局部排序。例如 int a={10,9,8,7,6,5,4,3,2,1} ,可以用sort(a,a+5) ,排序成 {6,7,8,9,10,5,4,3,2,1} 。(    )

A 正确

B 错误


17、用递归法求 的阶乘,时间复杂度是O(n)。(    )

A 正确

B 错误


18、[(1,2)*2]*3 在C++中是合法的表达式。(   )

A 正确

B 错误


19、在下面的C++代码中,将对1.txt文件写入 hello 。(   )

A 正确

B 错误


20、文本文件 1.txt 第1行由 01234 共5个字符组成其间没有空格,当用C++代码正常打开文件成功并执行如下代码以后,第1行长度为5(   )

A 正确

B 错误


21、执行C++代码 cout<<(5||2); 后将输出 1 。(   )

A 正确

B 错误


22、在C++中,两个字符串相加的运算符为+相当于字符串的合并运算。下面C++代码执行后,将输出chenadai 。(   )

A 正确

B 错误


23、C++内置函数 sort() 可以对整数、浮点数、字符数组进行从大到小,从小到大,局部排序。(   )

A 正确

B 错误


24、小杨最近在准备考GESP,他用的Dev C++来练习和运行程序,所以Dev C++也是一个小型操作系统。(   )

A 正确

B 错误


25、任何一个 while 循环都可以转化为等价的 for 循环(   )。

A 正确

B 错误


三、实操题

26、小杨的字典

时间限制:1.0 s

内存限制:128.0 MB

问题描述

在遥远的星球,有两个国家 A 国和 B 国,他们使用着不同的语言:A 语言和 B 语言。小杨是 B 国的翻译官,他的工作是将 A 语言的文章翻译成 B 语言的文章。

为了顺利完成工作,小杨制作了一本字典,里面记录了 个 A 语言单词对应的 B 语言单词,巧合的是,这些单词都由地球上的 26 个小写英文字母组成。

小杨希望你写一个程序,帮助他根据这本字典翻译一段 A 语言文章。这段文章由标点符号 !()-[]{}\|;:'",./?<> 和一些 A 语言单词构成,每个单词之间必定由至少一个标点符号分割,你的程序需要把这段话中的所有 A 语言单词替换成它的 B 语言翻译。特别地,如果遇到不在字典中的单词,请使用大写 UNK 来替换它。

例如,小杨的字典中包含 2 个 A 语言单词 abc 和 d ,它们的 B 语言翻译分别为 a 和 def ,那么我们可以把 A语言文章 abc.d.d.abc.abcd. 翻译成 B 语言文章 a.def.def.a.UNK. ,其中,单词 abcd 不在词典内,因此我们需要使用 UNK 来替换它。

输入描述

第一行一个整数N,表示词典中的条目数。保证N≤100。

接下来 行,每行两个用单个空格隔开的字符串A,B,分别表示字典中的一个 A 语言单词以及它对应的 B 语言翻译。保证所有A不重复;保证A和B的长度不超过10。

最后一行一个字符串S,表示需要翻译的 A 语言文章。保证字符串 的长度不超过1000,保证字符串S只包含小写字母以及标点符号 !()-[]{}\|;:'",./?<> 。


输出描述

输出一行,表示翻译后的结果。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。


样例输入 1

2
abc a
d def
abc.d.d.abc.abcd.

样例输出 1

a.def.def.a.UNK.

样例输入 2

3
abc a
d def
abcd xxxx
abc,(d)d!-abc?abcd

样例输出 2

a,(def)def!-a?xxxx

样例输入 3

1
abcdefghij klmnopqrst
!()-[]{}\|;:'",./?<>abcdefghijklmnopqrstuvwxyz

样例输出 3

!()-[]{}\|;:'",./?<>UNK

参考答案:根据题目描述,我们需要编写一个程序,该程序将输入的一段A语言文章中的单词替换为对应的B语言翻译。字典中的单词和翻译通过输入给出,字典中的单词不重复,且长度不超过10。A语言文章由标点符号和小写字母组成,单词之间由至少一个标点符号分割。如果单词不在字典中,则使用UNK替换。我们可以使用Python编写程序,首先读取字典,将字典中的单词和翻译存储在一个字典中。然后读取A语言文章,将文章中的单词替换为对应的B语言翻译,如果单词不在字典中,则替换为UNK。最后将翻译后的文章输出。


27、田忌赛马

时间限制:1.0 s

内存限制:128.0 MB

问题描述

你要和田忌赛马。你们各自有N匹马,并且要进行N轮比赛,每轮比赛,你们都要各派出一匹马决出胜负。

你的马匹的速度分别为u1,u2,…,uN,田忌的马匹的速度分别为v1,v2,…,vN。田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛?巧合的是,你和田忌的所有马匹的速度两两不同,因此不可能出现平局。

输入描述

第一行一个整数 。保证1≤N≤5×104

接下来一行N个用空格隔开的整数,依次为u1,u2,…,uN,表示你的马匹们的速度。保证1≤ui≤2N。

接下来一行N个用空格隔开的整数,依次为v1,v2,…,vN,表示田忌的马匹们的速度。保证1≤vi≤2N。

输出描述

输出一行,表示你最多能获胜几轮。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。


样例输入 1

3
1 3 5
2 4 6

样例输出 1

2

样例解释 1

第 1 轮,田忌派出速度为2的马匹,你可以派出速度为3的马匹迎战,本轮你获胜。

第 2 轮,田忌派出速度为4的马匹,你可以派出速度为5的马匹迎战,本轮你获胜。

第 3 轮,田忌派出速度为6的马匹,你可以派出速度为1的马匹迎战,本轮田忌获胜。

如此,你可以赢得 2 轮比赛。


样例输入 2

5
10 3 5 8 7
4 6 1 2 9

样例输出 2

5

参考答案:对于这个问题,我们可以使用贪心算法来解决。首先,将你和田忌的马匹速度分别按照从小到大的顺序进行排序。然后,从速度最小的马匹开始比较,你派出速度比田忌当前马匹速度大的马匹进行比赛,直到你无法派出速度比田忌当前马匹速度大的马匹为止。这样,你就能赢得尽可能多的比赛。


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2023年12月CCF-GESP编程能力等级认证C++编程四级真题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share