image

编辑人: 流年絮语

calendar2025-06-15

message4

visits396

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};

解析:【喵呜刷题小喵解析】:
在C++中,数组名本质上是一个指向数组首元素的指针,而不是整个数组。所以当我们定义字符串数组时,如果未显式指定终止字符'\0',字符串可能会继续读取后面的内存,直到遇到'\0'为止。这可能会导致数据丢失或者程序崩溃。

A选项定义了一个字符数组`dict_key`,其内容是{'p','t','o'},但缺少终止字符'\0',所以这是一个不完整的字符串,可能导致数据丢失或程序错误。

B选项定义了一个整型数组`dict_value`,内容是{33,22,11},这是一个整型数组,不涉及字符串,所以没有终止字符的问题。

C选项定义了一个字符数组`dict_name`,内容是{'c','h','e','n','\0','w','a','n','g','\0','z','h','o','u','\0'},这里字符'c', 'h', 'e', 'n'组成了一个字符串"chen",后面跟着'\0',然后'w', 'a', 'n', 'g'组成了一个字符串"wang",后面跟着'\0',然后'z', 'h', 'o', 'u'组成了一个字符串"zhou",后面跟着'\0'。虽然这里有三个字符串,但因为每个字符串后面都有'\0',所以不会导致数据丢失。

D选项定义了一个浮点型数组`dict_value`,内容是{3.0,2.0,1.0},这是一个浮点型数组,不涉及字符串,所以没有终止字符的问题。

所以,会丢失数据的是A选项。

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

A、

(221)10进制

B、

(335)8进制

C、

(dd)16进制

D、

(5d)16进制

解析:【喵呜刷题小喵解析】首先,我们需要将二进制数"1101 1101"转换为十进制数。二进制数"1101 1101"转换为十进制数的计算过程如下:
$11011101_{(2)} = 256 \times 0 + 64 \times 1 + 16 \times 1 + 4 \times 1 + 2 \times 0 + 1 \times 1 = 213_{(10)}$
然后,我们需要判断四个选项中哪一个的十进制数不等于213。
选项A:(221)10进制,221的十进制等于221,不等于213,但不符合题意。
选项B:(335)8进制,335的八进制转换为十进制是$3 \times 8^2 + 3 \times 8^1 + 5 \times 8^0 = 221$,不等于213,但不符合题意。
选项C:(dd)16进制,dd的十六进制转换为十进制是$13 \times 16^1 + 13 \times 16^0 = 221$,不等于213,符合题意。
选项D:(5d)16进制,5d的十六进制转换为十进制是$5 \times 16^1 + 13 \times 16^0 = 93$,显然不等于213,但不符合题意。
因此,不能够和二进制"1101 1101"相等的是选项C,即(dd)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;

解析:【喵呜刷题小喵解析】:在C++中,string类型的对象不能直接通过索引访问其字符,因为string类型是一个类,它提供了自己的成员函数来访问和操作字符串。在选项C中,`str[1]`、`str[2]`、`str[3]`和`str[4]`这些索引访问是错误的,会导致编译错误。其他三个选项都能正确编译和执行,输出"GESP"。所以,不能输出"GESP"的选项是C。

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

A、

10

B、

8

C、

4

D、

3

解析:【喵呜刷题小喵解析】:这段C++代码涉及到了递归。当`rec()`函数被调用时,它首先输出4,然后调用自身(即`rec()`),然后输出8,最后返回。在递归调用的`rec()`函数中,同样首先输出4,然后再次调用自身,然后输出8,最后返回。由于这个递归调用发生在`rec()`函数的函数体内,因此它实际上会创建一个新的栈帧。这个新的栈帧中的`rec()`函数再次调用`rec()`,输出4,然后输出8。由于这个递归调用是在这个新的栈帧中发生的,所以它的输出不会影响到原始的`rec()`函数。因此,整个输出顺序是:4,4,8,8,10。所以,输出的总和是8。因此,正确答案是B。

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

A、

4

B、

2

C、

5

D、

3

解析:【喵呜刷题小喵解析】:从给定的C++代码来看,代码定义了一个结构体`S`,并在其中定义了一个静态整数变量`a`。静态变量的初始化只会在程序第一次遇到该变量时进行,因此其初始值为0。在main函数中,静态变量`a`的值被修改为4,然后通过函数`fun`,该变量的值又被修改为5。因此,最后输出的是5。故正确选项为C。

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

A、

4

B、

3

C、

2

D、

5

解析:【喵呜刷题小喵解析】:根据题目中的代码,我们可以分析如下:

```cpp
#include
using namespace std;

int main() {
int a = 5;
int *p = &a;
cout << *p << endl;
cout << *(p + 1) << endl;
cout << *(p + 2) << endl;
return 0;
}
```

首先,定义了一个整型变量a,并将其初始化为5。然后,定义了一个整型指针p,并将a的地址赋值给p。

接着,程序连续输出了三个整数值,分别是`*p`、`(p + 1)`指向的值和`(p + 2)`指向的值。

因为p指向的是a的地址,所以`*p`的值就是a的值,即5。

然后,`(p + 1)`指向的是紧接在a后面的内存地址,由于C++中整型变量通常是4字节,所以`(p + 1)`指向的是a后面的一个整型变量的地址,这个整型变量默认初始化值是0。

同理,`(p + 2)`指向的是a后面的第二个整型变量的地址,这个整型变量也默认初始化值是0。

所以,程序的输出顺序是5,0,0,即选项B。

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

A、

输出未知的数

B、

输出'n'

C、

输出'\0'

D、

输出空格

解析:【喵呜刷题小喵解析】:从提供的图片中,我们可以看到C++代码片段。代码定义了一个字符变量`ch`,并初始化为字符'n'。然后,代码使用`cout`输出`ch`的地址。在C++中,字符变量的地址通常是以十六进制形式表示的。因此,输出将是字符'n'的地址,而不是字符本身、未知的数、'\0'或空格。所以,正确答案是B,即输出'n'。

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

A、

0

B、

1

C、

输出空格

D、

什么也不输出

解析:【喵呜刷题小喵解析】:此代码是C++的位运算代码,其中涉及到了按位与(&)运算。在C++中,按位与(&)运算用于对两个数的二进制表示进行位与运算。对于每个位,如果两个相应的位都为1,则结果为1,否则为0。

首先,我们来看变量a和b的二进制表示。

变量a的值为5,其二进制表示为0101。
变量b的值为3,其二进制表示为0011。

接着,我们进行按位与(&)运算。

0101
& 0011
------
0001

所以,a & b的结果为1。因此,输出结果为1。

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

A、

str[i]=='o'

B、

str[i]=='a'+14

C、

str[i]==115

D、

str[i]==111

解析:【喵呜刷题小喵解析】:题目中给出的代码片段似乎是为了统计字符串中每个字符出现的次数,但是给出的代码片段不完整,所以无法直接判断应该填入什么代码。不过,根据题目中的提示,当输出为3时,我们需要找到一个条件,使得当该条件满足时,字符出现的次数加1。

在ASCII码中,字符'o'的值为111,而字符'a'的值为97。如果我们将'a'的ASCII码值加上14,得到的结果就是111,也就是字符'o'的ASCII码值。因此,选项B中的条件`str[i]=='a'+14`实际上就是判断字符是否为'o'。

由于题目要求当输出为3时,横线上不能填入的代码,而输出为3意味着字符'o'出现了3次,因此我们需要找到一个条件,使得当该条件满足时,不会使字符'o'的计数加1。在ASCII码中,字符'o'的值为111,因此我们不能将条件设置为`str[i]==111`,因为这样会使字符'o'的计数加1。因此,选项C中的条件`str[i]==115`是不正确的。

由于字符'o'的ASCII码值为111,因此正确的条件应该是`str[i]==111`,也就是选项D中的条件。但是题目要求当输出为3时,横线上不能填入的代码,因此选项D是不正确的。

因此,根据题目中的提示和ASCII码的知识,我们可以推断出,当输出为3时,横线上不能填入的代码是选项D中的条件。

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

解析:【喵呜刷题小喵解析】:在32位计算机中,C++的整型变量int通常使用32位(即32个0或1)来表示。在32位中,有1位用于表示符号(正或负),其余31位用于表示数值。因此,int能够表示的数据范围是从-2^31到2^31-1。选项C正确表示了这个范围。选项A和D都试图表示正数范围,但A没有包括0,D的负数部分表示不正确。选项B表示2^32,这是64位整数的范围,不适用于32位int。

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

A 2

B 3

C 5

D 4

解析:【喵呜刷题小喵解析】根据给定的C++程序,我们可以发现这个程序在运行时会先初始化一个变量i,并将其值设为0。然后,通过一个for循环,每次循环都会使i的值加1,直到i的值达到3。在循环的过程中,每次循环都会打印出i的值。因此,程序会依次打印出0、1和2,最终结果是3。所以,正确答案是B。

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

A 1.5

B 1

C 2

D、

1.50

解析:【喵呜刷题小喵解析】:C++中的数据类型转换是自动的,但有时会导致一些意外的结果。在这个例子中,`int`类型的`1`被转换为`double`类型,然后参与计算。由于`double`类型的精度更高,所以`1`在`double`类型下仍然是`1.0`。在进行`1.0 / 2`运算时,结果是`0.5`。但由于结果会被存储在`int`类型的变量中,所以会发生整数除法,结果会被截断为`0`。然后,`0`被转换为`double`类型,再与`1.0`相加,结果是`1.0`。最后,`1.0`被转换为`int`类型,输出结果是`1`。因此,正确答案是B。

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

A、

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

B、

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

C、

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

D、

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

解析:【喵呜刷题小喵解析】:从图片中的代码可以看出,它使用了一个while循环来遍历输入的字符串strSrc,然后使用isdigit函数来检查每个字符是否是数字。如果是数字,则将其添加到电话号码变量中。当遇到非数字字符时,将电话号码输出,并在其前后添加括号和分隔符。因此,代码将不换行输出各个含有数字的电话号码,号码中间有分隔。所以选项C是正确的。

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

A、

麦克风

B、

扬声器

C、

油量表

D、

传感器

解析:【喵呜刷题小喵解析】:无人驾驶小汽车通过声控智能驾驶系统选择路线,必须依赖麦克风接收乘客的语音指令,并通过传感器收集道路和环境信息,以优化行驶路线。扬声器虽然可能用于告知乘客目的地,但它并不是完成选路所必须的,因为路线选择更多地依赖于接收到的语音指令和传感器收集的信息。油量表与路线选择无关,因此不是必须的。因此,正确答案是C,即油量表。

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

A 艾伦·图灵

B 冯·诺依曼

C 阿塔纳索夫

D 埃克特-莫克利

解析:【喵呜刷题小喵解析】:现代计算机是基于冯·诺依曼的体系结构。冯·诺依曼是现代计算机科学的奠基人之一,他提出了存储程序的概念,即计算机的程序和数据都存储在内存中,计算机通过读取和执行内存中的指令来执行计算任务。这种体系结构奠定了现代计算机的基础,因此选项B“冯·诺依曼”是正确答案。其他选项如艾伦·图灵、阿塔纳索夫和埃克特-莫克利虽然对计算机科学的发展也有贡献,但与现代计算机的体系结构没有直接关系。

二、判断题

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++中,`cout << (5 && 2) << endl;` 这段代码不会输出1。这里的 `&&` 是逻辑与操作符,当两个操作数都为真时,结果为真,返回1。但在这个表达式中,5和2都是非零值,所以 `5 && 2` 的结果是2,而不是1。因此,这段代码的输出应该是2,而不是1。所以,选项B是正确的。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:从题目描述来看,题目要求C++程序执行后,输入 "chen a dai" 输出应该为 "chen"。然而,题目中给出的图片并没有提供足够的信息来判断这个要求是否满足。图片中的代码片段并没有给出完整的上下文,也没有明确说明输入和输出的关系。因此,无法从题目中给出的信息中判断这个要求是否正确。所以,正确的答案应该是B,即错误。如果题目中的图片能够提供更多上下文信息,或者能够明确说明输入和输出的关系,那么才能做出准确的判断。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++中,`cout << (5 || 2);`这段代码会输出1,是因为逻辑或操作符`||`的优先级低于流插入操作符`<<`。实际上,这段代码等同于`cout << (5 || true);`,因为2是非零值,所以`5 || 2`的结果是`true`,而`true`在C++中会被转换为1,所以最终输出的是1。因此,选项A正确。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:根据提供的图片,该图片似乎是一个C++代码片段,但无法直接查看或解析图片内容。因此,无法确定代码的具体实现和输出。通常,C++代码的输出取决于代码的具体实现,而不是图片本身。因此,无法根据提供的图片判断代码是否会输出"China"。需要查看代码的具体实现才能确定其输出。因此,选项B“错误”是正确的。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:从提供的图片来看,代码片段不完整,无法准确判断其输出。然而,根据题目描述,执行C++代码将输出"0 5 , 5 之后还有一个空格",这看起来像是两个数字"0"和"5"之间有一个空格,然后是"5"后面再有一个空格。然而,这与题目描述中的"0 5 , 5 之后还有一个空格"不符。如果代码的输出真的是"0 5 , 5 之后还有一个空格",那么题目描述是错误的。因此,选择B选项。

需要注意的是,由于代码片段不完整,无法确定其实际输出。如果提供完整的代码,可能会有不同的结果。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:首先,这段代码并不符合C++的语法规则,因为它似乎是一个图片,而非有效的C++代码。但从题目描述来看,我们假设这段代码是有效的C++代码。从图片内容看,似乎是一段不完整的C++代码,缺少必要的上下文,比如变量的定义和使用的环境。但是,根据这段代码,我们可以猜测它的意图:它似乎是在使用指针进行一些操作,最后输出1。然而,由于代码不完整,我们无法准确地判断它是否会输出1。如果这段代码是在某种特定环境下运行,并且确实会输出1,那么选项A“正确”可能是正确的。但是,在没有更多上下文的情况下,我们无法确定这段代码是否会输出1,因此,这个判断题没有明确的正确答案。在没有更多信息的情况下,我们应该选择无法判断的选项,即选项B“错误”。然而,由于题目描述中明确提到“下面C++代码将输出1”,这可能意味着题目提供者认为这段代码在某种情况下会输出1。因此,如果我们假设这段代码在某种特定环境下确实会输出1,那么选项A“正确”可能是正确的。然而,在没有更多信息的情况下,我们无法确定这一点。因此,这是一个具有歧义的题目,没有明确的正确答案。在实际的编程环境中,我们需要更多的上下文信息才能准确地判断这段代码是否会输出1。在没有更多信息的情况下,我们应该选择无法判断的选项,即选项B“错误”。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:根据提供的图片,C++程序中的代码片段不完整,无法判断其是否能输出1。从提供的图片中无法获取完整的代码和上下文信息,因此无法判断其是否能输出1。因此,该题目的答案应选B,即错误。要准确判断代码是否能输出1,需要查看完整的代码和上下文信息。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:根据题目中的图片,显示的C++代码片段并没有明确输出9之后还有一个空格。从代码来看,它似乎是一个for循环,用于输出1到9的奇数,但并未显示输出9之后有一个空格。因此,题目中的描述是不准确的,选项B“错误”是正确的。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:Dev C++是一个集成开发环境(IDE),用于编写、编译和运行C++程序。它不是一个操作系统,操作系统负责管理和控制计算机硬件与软件资源的软件,如Windows、Linux等。因此,题目中的说法“Dev C++也是一个小型操作系统”是不正确的。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++中,while循环和for循环都是控制流语句,用于重复执行一段代码。while循环的基本结构是:先判断条件,如果条件为真,则执行循环体,然后再次判断条件。而for循环的基本结构是:初始化表达式,然后判断条件,如果条件为真,执行循环体,执行完循环体后执行更新表达式,再次判断条件。虽然两者的形式不同,但它们的核心思想是相似的,都是先判断条件,如果条件为真,则执行循环体。因此,通过适当的改写,任何一个while循环都可以转化为等价的for循环。所以,此题目的陈述是正确的。

三、实操题

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))将上述公式化简,即可得到总的鱼的数量。

解析:【喵呜刷题小喵解析】:
这个问题实际上是一个数学问题,涉及到等比数列的求和。在这个问题中,每只小猫分到的鱼的数量是一个等比数列,首项为N+i,公比为N/(N-1)。因为每只小猫都会扔掉i个鱼,所以最后一只小猫分到的鱼的数量是N+i,倒数第二只小猫分到的鱼的数量是(N+i)×N/(N-1),以此类推,直到第一只小猫。

根据等比数列的求和公式,我们可以计算出总的鱼的数量。然后,我们可以将总的鱼的数量作为输出,以满足题目的要求。

需要注意的是,这个问题中的N和i都是正整数,且0<N<10,i<N。因此,在编写程序时,我们需要对输入进行合法性检查,以确保输入的数据满足题目的要求。

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;```

解析:【喵呜刷题小喵解析】:

首先,从输入中读取题目数量N。然后,对于每个题目,从输入中读取转换的数值x、单位1和单位2。根据题目要求,将较大的单位转换为较小的单位,并输出转换后的结果。

在输出时,使用字符串拼接的方式将转换后的结果和原题目中的其他部分拼接在一起,输出即可。

需要注意的是,题目中只涉及将更大的单位转换为更小的单位,因此在输出时,只需将转换后的结果代入原题目中的?位置即可。

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

创作类型:
原创

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

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