GESP2024年3月认证C++二级

GESP2024年3月认证C++二级

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

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

B

B

B

C

B

C

D

B

C

A

D

A

C

C

C

1、下列流程图的输出结果是?( )

图片

A.优秀

B.良好

C.不及格

D.没有输出

【答案】B

【考纲知识点】流程图的概念与描述(二级)

【解析】程序开始; cj 被赋值为75 ; 验证cj >= 60 ; 75 >= 60成立进入YES 分支,验证cj >= 90 ;75 >= 90 不成立进入NO 分支;输出 良好 ,程序结束。

2、以下选项中不符合C++变量命名规则的是?( )

A. student

B. 2_from

C. _to

D.Text

【答案】B

【考纲知识点】变量的定义与使用(一级)

【解析】有效的变量名是由大小写字母、数字、下划线组成的任意长度的序列,且第一个字符不能为数字。另外,C++中有一些关键字已被编程语言保留,不能用作变量名。B选项的第一个字符为数字,不符合要求。

3、以下选项中,不能用于表示分支结构的C++保留字是?( )

A. switch

B. return

C. else

D. if

【答案】B

【考纲知识点】分支结构(一级)

【解析】switch是用于多分支选择的保留字,根据条件值执行若干语句。if、else也是用于分支选择的保留字,根据条件真假执行特定语句。return不是表示分支结构的保留字,它用于终止当前函数并返回指定值(如果存在)给调用者。

4、下列说法错误的是?( )

A. while 循环满足循环条件时不断地运行,直到指定的条件不满足为止

B. if 语句通常用于执行条件判断

C.在C++中可以使用foreach 循环

D. break 和continue 语句都可以用在for 循环和while 循环中

【答案】C

【考纲知识点】 分支 / 循环结构(一级)

【解析】C++中也没有直接称为foreach的循环结构。C++11中引入的用于遍历的容器的范围for循环使用的是任然是关键字for。C++中没有foreach关键字。

5、下列4个表达式中,答案不是整数8的是?( )

A.abs(-8)

B.min(max(8, 9), 10)

C.int(8.88)

D.sqrt(64)

【答案】B

【考纲知识点】常用数学函数(二级)

【解析】A选项为绝对值函数,表达式的结果是8;B选项为最值函数首先执行内部的max(8, 9),结果是9,然后执行min(9, 10),结果是9。C选项为函数式强制类型转换,截断取整结果为8。D选项为平方根函数结果为浮点类型的8。

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

图片

A. 8

B. 14

C. 26

D. 50

【答案】C

【考纲知识点】循环结构(一级)

【解析】n = 3,i的初值为0,当i小于2是会执行循环。因此,循环会执行两次。m的初值为8 ,第一次循环m = 7 * 2 被更新为14;第二次循环m = 13 * 2;被更新为26,最终输出26。

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

图片

A. 16

B. 36

C. 49

D. 81

【答案】D

【考纲知识点】多层分支/ 循环结构(二级)

【解析】i = 1,n = 81因为while条件满足进入循环,执行i += 1,当i增加到3的时候if 条件成立result被赋值为9;当i增加到9的时候if 条件第二次成立result被赋值为81;当i增加为10时,while条件不成立结束循环输出81。

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

图片

A. 2

B. 3

C. 4

D. 5

【答案】B

【考纲知识点】多层分支/ 循环结构(二级)

【解析】s = 2,t = 10 第一次进入循环if 条件成立t 被更新为5;第二次进入循环if 条件不成立t被更新为4;第三次进入循环if 条件成立t被更新为2与s相等结束循环;循环执行了3次ans自增了三次最终输出3。

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

图片

A. 5

B. 6

C. 7

D. 8

【答案】C

【考纲知识点】多层分支/ 循环结构(二级)

【解析】cur = 2,masks = 10,前5次循环if条件不满足,第5次循环后cur = 0,masks = 5;第6次进入循环if条件满足masks先加7后减1被更新为11;第7次进入循环if 条件满足masks被更新为17 与n 相同结束循环。循环执行了7次days自增了7次最终输出7。

10、以下C++代码判断一个正整数N的各个数位是否都是偶数。如果都是,则输出“是”,否则输出“否”。例如 N=2024时输出“是”。则横线处应填入( )。

图片

A. break

B. continue

C. N = N / 10

D. N = N % 10

【答案】A

【考纲知识点】多层分支/ 循环结构(二级)

【解析】在十进制下,一个数的奇偶性由它的个位数字决定。因为,十进制是基于10的倍数来构建的,而10是2的倍数,这意味着除了个位以外的任何位上的数字(十位、百位、千位等)乘以其对应的10的幂次,都将产生一个偶数。本题在循环中使用if语句判断当前N的个位是否为偶数,如果是则通过N /= 10去掉个位继续检查下一位;如果不是则说明已经找到了一个奇数位,没有必要继续检查,使用break立刻结束循环。

11、有句俗话叫“三天打渔,两天晒网”。如果小杨前三天打渔,后两天晒网,一直重复这个过程,以下程序代码 用于判断,第n天小杨是在打鱼还是晒网,横线处应填写?( )

图片

A. i == 0

B. i == 4

C. i == 0 && i == 4

D. i == 0 || i == 4

【答案】D

【考纲知识点】分支结构(一级)

【解析】n为4或5时晒网,当n = 4时i为4 % 5 = 4;当n = 5时5 % 5 = 0。

12、一个数的所有数字倒序排列后这个数的大小保持不变,这个数就是回文数,比如101 与6886 都是回文数, 而 100不是回文数。以下程序代码用于判断一个数是否为回文数,横线处应填写?( )

图片

A. 10 * a + n % 10

B. a + n % 10

C. 10 * a + n / 10

D. a + n / 10

【答案】A

【考纲知识点】分支/ 循环结构(一级)

【解析】要判断一个数是否为回文数,需要将这个数反转。反转的过程中,每一步都需要将已有的反转数a 乘以10(为新的数字位腾出空间),然后加上n 的当前最后一个数字(即n % 10)。所以,横线处的代码应该是:a = 10 * a + n % 10; 这样每次循环都会取出n 的最后一位数字,加到a 的最后,同时n 除以10 去掉最后一位。循环直到n 为0,此时如果a与原始的数字k 相等,那么原始的数字就是回文数。

13、给定两个整数n与k,打印出一个栅栏图形,这个栅栏应该分成n段,段与段之间的间隔为+ , 段内的填充为k个- 。形如n = 5,k = 6时,图形如下:

图片

以下程序代码用于绘制该图形,横线处应填写?( )

图片

A. cout << '+' << endl;

B. cout << '+' << ' ' << endl;

C. cout << '+';

D. cout << '+' << ' ';

【答案】C

【考纲知识点】多层分支/ 循环结构(二级)

【解析】每段的开始打印一个+,然后打印k 个-。因为j 从1 开始,循环会执行k-1 次,所以我们需要在循环外再打印一个- 来确保每段有k 个-。在所有段打印完之后,还需要打印一个额外的+ 来结束栅栏图形。因此,选项C  是正确的,它每段的开始打印一个+,不会造成换行或额外的空格。

14、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是。( )

A.小程序

B.计时器

C.操作系统

D.神话人物

【答案】C

【考纲知识点】计算机基础(一级)

【解析】鸿蒙HarmonyOS是华为开发的全场景分布式操作系统,支持多种终端设备运行,提供应用开发、设备开发的一站式服务的平台。

15、中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。

A.制造自动驾驶汽车

B.创立培训学校

C.发明汉字激光照排系统

D.成立方正公司

【答案】C

【考纲知识点】计算机历史(一级)

【解析】王选先生是中国著名的计算机科学家,他的重大贡献是发明了汉字激光照排系统,这一发明极大地推动了中国印刷业的现代化进程。

二、判断题(每题2分,共20分)

题号

1

2

3

4

5

6

7

8

9

10

答案

×

×

×

×

×

×

1、如果有以下C++代码:

图片

那么cout << t 的结果为28.5 。(  )

【答案】错误

【考纲知识点】数据类型的转换(二级)

【解析】int(s)将double类型的18.5转换为int类型,通过截断取整结果为18再加上10最终输出28。

2、Xyz,xYz ,xyZ 是三个不同的变量。( )

【答案】正确

【考纲知识点】变量的定义与使用(一级)

【解析】在C++中,变量名是区分大小写的,Xyz、xYz和xyZ是三个不同的变量。

3、cout << (8< 9< 10) 的输出结果为true。( )

【答案】错误

【考纲知识点】基本运算(一级)

【解析】程序输出结果为1。

4、for (i = 0; i < 100; i+=2) ; 语句中变量i的取值范围是0到99。(  )

【答案】错误

【考纲知识点】循环结构(一级)

【解析】在这个for循环中,变量i从0开始,以2为步长递增,直到它不小于100。因此,i的取值是0, 2, 4, ..., 96, 98。99不在这个范围内,所以它不会取到99。

5、C++中cout << float(2022) 与cout << float('2022') 运行后的输出结果均为2022。(   )

【答案】错误

【考纲知识点】数据类型的转换(二级)

【解析】cout << float(2022)将输出浮点数2022。而cout << float('2022')会将int类型的多字符字面量转换成float类型后做输出,输出结果不为2022。

6、已知A的ASCII码值为65,表达式int('C')+abs(-5.8)的值为72.8。(   )

【答案】正确

【考纲知识点】 ASCII编码(二级)

【解析】字符'C'的ASCII码值是67。int('C')将字符'C'转换为其ASCII码值,即67。abs(-5.8)计算-5.8的绝对值,结果是5.8。所以表达式int('C') + abs(-5.8)的值是67 + 5.8,等于72.8。

7、bool()函数用于将给定参数或表达式转换为布尔类型。语句bool(-1) 返回的是false 值。(   )

【答案】错误

【考纲知识点】数据类型的转换(二级)

【解析】语句bool(-1)返回的是true值,因为在C++中任何非零整数值转换为布尔时都会被视为true。

8、如果变量a的值使得C++表达式sqrt(a)==abs(a),则a的值为0。(  )

【答案】错误

【考纲知识点】常用数学函数(二级)

【解析】如果变量 a 的值使得 C++ 表达式 sqrt(a)==abs(a),则 a 的值可以是 0 或1。

9、小杨今年春节回奶奶家了,奶奶家的数字电视要设置ip地址并接入到WIFI盒子才能收看节目,那这个WIFI盒子具有路由器的功能。( )

【答案】正确

【考纲知识点】 计算机网络

【解析】WIFI盒子如果能够为连接的设备分配IP地址,并且提供接入互联网的能力,那么它就具备了路由器的基本功能。

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

【答案】正确

【考纲知识点】循环结构(一级)

【解析】任何一个 for 循环都可以用 while 循环来表示,反之亦然。

三、编程题(每题25分,共50分)

题号

1

2

答案

1、乘法问题

问题描述

小A最近刚刚学习了乘法,为了帮助他练习,我们给他若干个正整数,并要求他将这些数乘起来。对于大部分题目,小A可以精准地算出答案,不过,如果这些数的乘积超过 ,小 A就不会做了。请你写一个程序,告诉我们小A 会如何作答。

输入描述

第一行一个整数 ,表示正整数的个数。

接下来n行,每行一个整数a。小A 需要将所有的a乘起来。

保证n ≤ 50,a ≤ 100 。

输出描述

输出一行,如果乘积超过106,则输出>1000000;否则输出所有数的乘积。

特别提醒

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

样例输入1

图片

样例输出1

图片

样例输入2

图片

样例输出2

图片

样例输入3

图片

样例输出3

图片

【题目大意】输入n个数,对这些数求积,检查乘积是否超过106。

【考纲知识点】 基本数据类型(一级)、多层分支 /循环结构(二级)

【解题思路】

1.首先,读取整数n,表示正整数的个数。

2.初始化长整型变量product 为1,用于存储n个数的积。

3.接下来,使用 for循环来读取n个数,并且在每次循环中将读取的数与product 相乘。

4.在每次乘法之前,我们检查product 与当前读取的数相乘后是否会超过106。如果超过,输出">1000000" 并且立即结束程序。

5.如果循环没有中途结束,证明乘积没有超过106,直接输出product 的值。

注意:在乘法之前进行了是否超过106的检查,这是为了防止不必要的计算,一旦超过就立即结束程序。如果不提前检查乘积是否超过106在极端情况会出现溢出错误。

【参考程序】

图片

2、小杨的日字矩阵

问题描述

小杨想要构造一个N×N的日字矩阵(N为奇数),具体来说,这个矩阵共有N行,每行N个字符,其中最左列、最右列都是|,而第一行、最后一行、以及中间一行(即第

图片

行)的第2 ~ N - 1个字符都是-,其余所有字符都是半角小写字母x。例如,一个N = 5的日字矩阵如下:

图片

请你帮小杨根据给定的N打印出对应的“日字矩阵”。

输入描述

一行一个整数N(5 ≤ N ≤ 49,保证N为奇数)。

输出描述

输出对应的“日字矩阵”。

请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出N行,每行除了换行符外恰好包含N个字符,这些字符要么是-,要么是|,要么是x。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。

特别提醒

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

样例输入1

图片

样例输出1

图片

样例输入2

图片

样例输出2

图片

【题目大意】

输出N × N的字符矩阵,最左列、最右列为字符'|',对于除最左最右列外的每一列:第一行、最后一行以及中间行为字符'-',其余行为字符'x'。

【考纲知识点】 多层循环结构(二级)

【解题思路】

1.首先,读取整数n,表示矩阵的N行N列。

2.使用双重循环遍历矩阵的每一个位置,循环变量i为矩阵的行号,j为矩阵的列号。

3.依次检查列号、行号,根据规则输出相应字符。

【参考程序】

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值