2023年12月 GESP C++ 4级认证考试真题(含编程操作题部分)
选 单选题(共 15 题,每题 2 分)
下面有关函数参数的说法,正确的是( )。
下面 C++ 代码执行后,输出的是( )。
下面 C++ 代码最后执行后输出是( )。
下面 C++ 代码执行后的结果是( )。
下面 C++ 代码执行后输出是( )。
如果变量 $x$ 的地址是 0x6ffe14,下面 C++ 代码执行以后输出的是( )。
在 C++ 中,执行下面代码后,输出的是( )。
下列 C++ 语句执行以后结果是 true 的是( )。
在如下的 C++ 代码中实现了对字符串中出现的 26 个字母的个数统计,横线处应填入是( )。
下面 C++ 代码执行后生成的文件其字节数为( )。
下列 C++ 代码输入 $1$ , $2$ , $3$ , $4$ ,执行后,将输出的是( )。
以下 C++ 代码用于实现每个整数对应的因数,如输入 $12$ ,则输出 $1$ $2$ $3$ $4$ $6$ $12$ ;如输入 $18$ ,则输出 $1$ $3$ $6$ $9$ $18$ 。横线处应填入代码是( )。
某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。( )
现代计算机是指电子计算机,它所基于的是( )体系结构。
输入一个正整数 $N$($N \geq 7$),想找出它所有相邻的因数对,比如,输入 $12$,因数对有 $(1,2)$、$(2,3)$、$(3,4)$。下面哪段代码找不到所有的因数对?()
判 判断题(共 10 题,每题 2 分)
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}。( )
用递归法求 $n$ 的阶乘,时间复杂度是 $O(n)$。
[(1,2)*2]*3 在 C++ 中是合法的表达式。( )
在下面的 C++ 代码中,将对 1.txt 文件写入 hello。( )
文本文件 1.txt 第 1 行由 01234 共 5 个字符组成其间没有空格,当用 C++ 代码正常打开文件成功并执行如下代码以后,第 1 行长度为 5( )
执行 C++ 代码 cout << (5 || 2); 后将输出 $1$。( )
在 C++ 中,两个字符串相加的运算符 + 相当于字符串的合并运算。下面 C++ 代码执行后,将输出 chenadai。( )
C++ 内置函数 sort() 可以对整数、浮点数、字符数组进行从大到小,从小到大,局部排序。( )
小杨最近在准备考 GESP,他用的 Dev C++ 来练习和运行程序,所以 Dev C++ 也是一个小型操作系统。( )
任何一个 while 循环都可以转化为等价的 for 循环( )。
编 编程操作题(共 2 题,共 50 分)
试题名称:小杨的字典
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
在遥远的星球,有两个国家 A 国和 B 国,他们使用着不同的语言:A 语言和 B 语言。小杨是 B 国的翻译官,他的工作是将 A 语言的文章翻译成 B 语言的文章。
为了顺利完成工作,小杨制作了一本字典,里面记录了 $N$ 个 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 \le 100$。
接下来 $N$ 行,每行两个用单个空格隔开的字符串 $A$, $B$ ,分别表示字典中的一个 A 语言单词以及它对应的 B 语言翻译。保证所有 $A$ 不重复;保证 $A$ 和 $B$ 的长度不超过 $10$。
最后一行一个字符串 $S$ ,表示需要翻译的 A 语言文章。保证字符串 $S$ 的长度不超过 $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
试题名称:田忌赛马
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
你要和田忌赛马。你们各自有 $N$ 匹马,并且要进行 $N$ 轮比赛,每轮比赛,你们都要各派出一匹马决出胜负。
你的马匹的速度分别为 $u_1,u_2,\cdots,u_n$,田忌的马匹的速度分别为 $v_1,v_2,\cdots,v_n$。田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛?巧合的是,你和田忌的所有马匹的速度两两不同,因此不可能出现平局。
输入格式
第一行一个整数 $N$。保证 $1\le N \le 5\times 10^4$
接下来一行 $N$ 个用空格隔开的整数,依次为 $u_1,u_2,\cdots,u_n$,表示你的马匹们的速度。保证 $1\le u_i\le 2N$。
接下来一行 $N$ 个用空格隔开的整数,依次为 $v_1,v_2,\cdots,v_n$,表示田忌的马匹们的速度。保证 $1\le v_i\le 2N$。
输出格式
输出一行,表示你最多能获胜几轮。
样例输入 #1
3
1 3 5
2 4 6
样例输出 #1
2
样例输入 #2
5
10 3 5 8 7
4 6 1 2 9
样例输出 #2
5
说明/提示
样例解释 1
第 1 轮,田忌派出速度为 2 的马匹,你可以派出速度为 3 的马匹迎战,本轮你获胜。
第 2 轮,田忌派出速度为 4 的马匹,你可以派出速度为 5 的马匹迎战,本轮你获胜。
第 3 轮,田忌派出速度为 6 的马匹,你可以派出速度为 1 的马匹迎战,本轮田忌获胜。
如此,你可以赢得 2 轮比赛。