image

编辑人: 人逝花落空

calendar2025-06-15

message1

visits776

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

一、单选题

1、下面C++数组的定义中,会丢失数据的是(   )。

A、

char dict_key[] = {'p','t','o'};

B、

int dict_value[] = {33,22,11};

C、

char dict_name[]={'chen','wang','zhou'};

D、

float dict_value[]={3,2,1};


2、在下列编码中,不能够和二进制"1101 1101"相等的是(   )。

A、

(221)10进制

B、

(335)8进制

C、

(dd)16进制

D、

(5d)16进制


3、下面C++代码执行后不能输出"GESP"的是(   )。

A、

string str("GESP"); cout<<str<<endl;

B、

string str="GESP"; cout<<str<<endl;

C、

string str("GESP"); cout<<str[1]<<str[2]<<str[3]<<str[4]<<endl;

D、

string str{"GESP"}; cout<<str<<endl;


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

A、

10

B、

8

C、

4

D、

3


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

A、

4

B、

2

C、

5

D、

3


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

A、

4

B、

3

C、

2

D、

5


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

A、

输出未知的数

B、

输出'n'

C、

输出'\0'

D、

输出空格


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

A、

0

B、

1

C、

输出空格

D、

什么也不输出


9、下面C++代码用于统计每种字符出现的次数,当输出为3时,横线上不能填入的代码是(   )。

A、

str[i]=='o'

B、

str[i]=='a'+14

C、

str[i]==115

D、

str[i]==111


10、32位计算机中,C++的整型变量int能够表示的数据范围是(   )。

A 2^31~(2^31)-1

B 2^32

C -2^31~+(2^31)-1

D -(2^31)+1~2^31


11、下面C++程序执行的结果是(   )。

A 2

B 3

C 5

D 4


12、C++的数据类型转换让人很难琢磨透,下列代码输出的值是(   )。

A 1.5

B 1

C 2

D、

1.50


13、C++代码用于抽取字符串中的电话号码。约定:电话号码全部是数字,数字之间没有其他符号如连字符或空格等。代码中变量strSrc仅仅是示例,可以包含更多字符。下面有关代码说法,正确的说法是(   )。

A、

代码将换行输出各个含有数字的电话号码。

B、

代码将不换行输出各个含有数字的电话号码,号码中间没有分隔。

C、

代码将不换行输出各个含有数字的电话号码,号码中间有分隔。

D、

不能够输出数字电话号码。


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

A、

麦克风

B、

扬声器

C、

油量表

D、

传感器


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

A 艾伦·图灵

B 冯·诺依曼

C 阿塔纳索夫

D 埃克特-莫克利


二、判断题

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

A 正确

B 错误


17、C++程序执行后,输入 chen a dai 输出应该为: chen 。(   )

A 正确

B 错误


18、执行C++代码 cout<<(5||2); 后将输出 1 。(   )(2023年12月C++三级)

A 正确

B 错误


19、执行下面C++代码后将输出"China"。(   )

A 正确

B 错误


20、执行C++代码将输出 0 5 , 5 之后还有一个空格。(   )

A 正确

B 错误


21、下面C++代码将输出1(   )

A 正确

B 错误


22、下面C++程序将输出1。(   )

A 正确

B 错误


23、执行C++代码,将输出 1 3 5 7 9 , 9 之后还有一个空格。(   )

A 正确

B 错误


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

A 正确

B 错误


25、任何一个while循环都可以转化为等价的for循环(   )。(2023年12月C++三级)

A 正确

B 错误


三、实操题

26、小猫分鱼

时间限制:1.0 s

内存限制:128.0 MB

问题描述

海滩上有一堆鱼,N只小猫来分。第一只小猫把这堆鱼平均分为N份,多了i个(i<N),这只小猫把多的i个扔入海中,拿走了一份。第二只小猫接着把剩下的鱼平均分成N份,又多了i个,小猫同样把多的i个扔入海中,拿走了一份。第三、第四、……,第N只小猫仍是最终剩下的鱼分成N份,扔掉多了的i个,并拿走一份。

编写程序,输入小猫的数量N以及每次扔到海里的鱼的数量i,输出海滩上最少的鱼数,使得每只小猫都可吃到鱼。

例如:两只小猫来分鱼N=2,每次扔掉鱼的数量为i=1,为了每只小猫都可吃到鱼,可令第二只小猫需要拿走1条鱼,则此时待分配的有3条鱼。第一只小猫待分配的鱼有3*2+1=7条。

输入描述

总共 2 行。第一行一个整数N,第二行一个整数i。

保证0<N<10;i<N。

输出描述

一行一个整数,表示满足要求的海滩上最少的鱼数。

特别提醒

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


样例输入1

2
1

样例输出1

7

样例输入2

3
1

样例输出2

25

样例解释2

三只小猫来分鱼N=3,每次扔掉鱼的数量为i=1,为了每只小猫都可吃到鱼,可令第三只小猫需要拿走3条鱼(拿走1条和2条不满足要求),则此时待分配的有10条鱼。第二只小猫待分配的鱼有10×3/2+1=16条。第一只小猫待分配的鱼有16×3/2+1=25条。

参考答案:根据题目描述,每只小猫分到的鱼的数量是一个等比数列,首项为N+i,公比为N/(N-1)。因为每只小猫都会扔掉i个鱼,所以最后一只小猫分到的鱼的数量是N+i,倒数第二只小猫分到的鱼的数量是(N+i)×N/(N-1),以此类推,直到第一只小猫。因此,总的鱼的数量可以表示为:(N+i) × (1 + N/(N-1) + (N/(N-1))^2 + ... + (N/(N-1))^(N-1))这个等比数列的求和公式为:S = a1 × (1 - r^n) / (1 - r)其中,a1为首项,r为公比,n为项数。将上述公式代入,得到:S = (N+i) × (1 - (N/(N-1))^N) / (1 - N/(N-1))将上述公式化简,即可得到总的鱼的数量。


27、单位转换(2023年12月C++三级)

时间限制:1.0 s

内存限制:128.0 MB

问题描述

小杨这周的数学作业是做单位转换,喜欢编程的小杨决定编程帮他解决这些问题。

小杨只学了长度单位和重量单位,具体来说:

长度单位包括千米( km )、米( m )、毫米( mm ),它们之间的关系是:1km=1000m=1000000mm。

重量单位包括千克( kg )、克( g )、毫克( mg ),它们之间的关系是:1kg=1000g=1000000mg。

小杨的作业只涉及将更大的单位转换为更小的单位,也就是说,小杨的作业只会包含如下题型:米转换为毫米,千米转换为毫米,千米转换为米,克转换为毫克,千克转换为毫克,千克转换为克。

现在,请你帮忙完成单位转换的程序。

输入描述

输入的第一行为一个整数N,表示题目数量。

接下来N行,每行一个字符串,表示转换单位的题目,格式为 x 单位1 = ? 单位2 。其中, x 为一个不超过1000的非负整数, 单位1 和 单位2 分别为两个单位的英文缩写,保证它们都是长度单位或都是重量单位,且 单位1 比 单位2 更大。

例如,如果题目需要你将1km转换为mm,则输入为 1 km = ? mm 。

保证1≤N≤1000。

输出描述

输出N行,依次输出所有题目的答案,输出时,只需要将输入中的 ? 代入答案,其余部分一字不差地输出即可。

由于小杨的题目只涉及将更大的单位转换为更小的单位,并且输入的 x 是整数,因此答案一定也是整数。

例如,如果题目需要你将1km转换为mm,输入为 1 km = ? mm ,则你需要输出 1 km = 1000000 mm 。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。输入格式将严格按照题目要求,且你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。


样例输入 1

2
1km=?mm
1m=?mm

样例输出1

1km=1000000mm
1m=1000mm

样例输入2

5
100m=?mm
1000km=?m
20kg=?g
200g=?mg
0kg=?mg

样例输出2

100m=100000mm
1000km=1000000m
20kg=20000g
200g=200000mg
0kg=0mg

参考答案:```cpp#include #include using namespace std;int main() int N;cin >> N;for (int i = 0; i < N; i++) {string unit1, unit2, s;int x;cin >> x >> unit1 >> s >> unit2;if (unit1 == "km" && unit2 == "mm") {cout << x << unit1 << "=" << x * 1000000 << unit2 << endl;} else if (unit1 == "m" && unit2 == "mm") {cout << x << unit1 << "=" << x * 1000 << unit2 << endl;} else if (unit1 == "kg" && unit2 == "g") {cout << x << unit1 << "=" << x * 1000 << unit2 << endl;} else if (unit1 == "kg" && unit2 == "mg") {cout << x << unit1 << "=" << x * 1000000 << unit2 << endl;} else if (unit1 == "g" && unit2 == "mg") {cout << x << unit1 << "=" << x * 1000 << unit2 << endl;}}return 0;```


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

创作类型:
原创

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

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