当前位置: 首页 > article >正文

2023 年 3 月 GESP C++ 二级试卷解析

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

1.   以下存储器中的数据不会受到附近强磁场干扰的是  (    )

A .硬盘 

B .U盘 

C . 内存 

D .光盘

【答案】D

【考纲知识点】计算机的存储(二级)

【解析】光盘是光存储介质,是通过激光高温改变光盘涂覆层的形状来记录数据  的,不会因为磁场而改变记录特性。硬盘是磁介质的数据存储设备,会直接受到  磁场干扰 。强磁场会在 U 盘和内存的电路中产生感应电流,可能会破坏存储器, 导致数据受损 。所以此题正确答案为 D。

2.   下列流程图,属于计算机的哪种程序结构?(   )。

A . 顺序结构

B . 循环结构 

C . 分支结构 

D . 数据结构

【答案】C

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

【解析】流程图根据是否按下空格键设置了两个分支,符合分支结构的特征,所 以本题正确答案为 C。

3.   下列关于 C++语言的叙述,不正确的是() 。

A . double 类型的变量占用内存的大小是浮动的

B . bool 类型的变量占用 1 字节内存

C . int 类型变量的取值范围不是无限的 

D . char 类型的变量有 256 种取值

【答案】A

【考纲知识点】计算机的存储(二级)

【解析】在当前 C++标准下,double 类型通常占用 8 个字节,bool 类型占用 1 个 字节,int 类型通常占用4 个字节,char 类型占用 1 字节 。int 类型的取值范围为 − 231~231  − 1 ,char 类型的范围是-128~127 ,所以本题正确答案为 A。

4.   下列关于 C++语言的叙述,不正确的是() 。

A . 变量定义后,可以使用赋值语句改变它的值

B . 变量定义时,必须指定类型 

C . 变量名必须为合法标识符

D . 合法标识符可以以数字开始

【答案】D

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

【解析】变量定义时,必须指定类型,且变量名必须为合法标识符(只能由字母, 数字,下划线组成,且不能以数字开头) ,所以本题正确答案为 D。

5.   以下哪个不是 C++语言的关键字?

A . return

B . max

C . else

D . case

【答案】B

【考纲知识点】程序设计语言的特点(二级)

【解析】本题属于考察 C++语言的关键字,max 是 C++中的一个库函数,不属于 关键字,所以本题正确答案为 B。

6.   以下哪个不是 C++语言的运算符?

A . \=

B . /= 

C . -= 

D . !=

【答案】A

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

【解析】B 选项 a /= b,等价于 a = a / b;C 选项 a -= b  等价于  a = a – b;D 选项“!=” 是不等于 。A 选项\=并不是 C++语言的运算符,所以本题正确答案为 A。

7.   如果 a 和 b 都是 char 类型的变量,下列哪个语句不符合 C++语法?

A . b = a + 1;   

B . b = a + '1'; 

C . b = 'a'++;   

D . b = a++;

【答案】C

【考纲知识点】基本数据类型(一级) 【解析】

A 选项,赋值号右侧表达式对 a 的 ASCII 码数值加 1 ,结果为 int 类型,赋值给 b 时转换为 char 类型,也即比 a 的 ASCII 码值大 1 的对应字符 。符合 C++语法。

B 选项,'1'为 char 类型常量,赋值号右侧表达式对 a 的 ASCII 码数值加'1'的 ASCII 码数值,结果为 char 类型,赋值给 b 。符合 C++语法。

C 选项,'a'为 char 类型常量,常量不能进行++自增运算,不符合 C++语法。

D 选项,a 为 char 类型常量,可以进行++自增运算 。该语句将 a 变为 ASCII 码值 增加 1 的对应字符,并将变化前的a 值赋值给 b 。符合 C++语法。

所以本题正确答案为 C。

8.   如果 a、b、c 和 d 都是 int 类型的变量,则下列哪个表达式能够正确计算它们 的平均值?

A .  (a + b + c + d) / 4

B .  (a + b + c + d) % 4

C .  (a + b + c + d) / 4.0

D .  (a + b + c + d) % 4.0

【答案】C

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

【解析】A 选项中所有参与计算的数都是整型,最终的计算结果也是整型,会默 认向下取整,导致平均值不准确。 B 选项计算的是 a 、 b 、c 、d 四个整数的和除  以 4 的余数。C 选项为 a 、b 、c 、d 四个整数的和除以 4.0 的结果,计算过程中会 将 4.0 视为浮点数,整型与浮点型的计算结果默认为浮点型。 D 选项 “% ”不能  与浮点数参与运算,用法错误 。所以本题正确答案为 C。

9.   如果 a 为 char 类型的变量,且 a 的值为'2' ,则下列哪条语句执行后,a 的值 不会变为'3'?

A . a = a + 1; 

B . a + 1;

C . a = 1 + a; 

D . ++a;

【答案】B

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

【解析】B 选项中并未对 a + 1 的结果进行任何处理,变量 a 在计算过程中未发 生改变,所以本题正确答案为 B。

10. 如果 a 为 int 类型的变量,且 a 的值为 9,则执行 a -= 3;之后,a 的值会是()。

A . 3

B . 6

C . 9

D . 12

【答案】B

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

【解析】a -= 3;等价于 a = a - 3;  表示把 a - 3 的计算结果重新赋值给 a 变量,所 以本题正确答案为 B。

11. 如果 a 和 b 均为 int类型的变量,下列表达式能正确判断“a 等于 0 或 b 等于 0” 的是 ()

A . (!a) || (!b)

B . (a == b == 0)

C . (a == 0) && (b == 0)

D . (a == 0) - (b == 0) == 0

【答案】A

【考纲知识点】逻辑运算(一级)

【解析】A 选项中 “ !a ”表示 a 等于 0 ,同理 “ !b ”表示 b 等于 0 ,整个表示式表 示 a 等于 0 或 b 等于 0。 B 选项会先判断 a 变量和 b 变量是否相等(若 a 和 b 相 等,表达式的值为 1,若 a 和 b 不相等,表达式的值为 0),然后再判断表达式(a==b) 的值是否为 0。C 选项表示 a 等于0 且 b 等于 0 。D 选项表示表达式(a==0)减表达 式(b==0)的计算结果是否为 0 ,表示 a 和 b 同时为 0 或 a 和 b 同时都不为 0 。所  以本题正确答案为 A。

12. 如果 a 为 char 类型的变量,下列哪个表达式可以正确判断“a 是小写字母”?

A . a <= a <= z

B . a - 'a' <= 'z' - 'a'

C . 'a' <= a <= 'z'

D . a >= 'a' && a <= 'z'

【答案】D

【考纲知识点】逻辑运算(一级)

【解析】A 选项,a <= a 总是成立,因此表达式等价于 1 <= z 。B 选项等价于 a <= ‘z’。C 选项无论’a’ <= a 是否成立,表达式的值 0 或 1 都小于’z’。 D 选项表示 a 大 于等于’a’,并且 a 小于等于’z’,说明 a 变量的 ASCII 码在字符’a’和字符’z’对应的  ASCII 码之间, 即 a 变量为小写字母 。所以本题正确答案为 D。

13. 在下列代码的横线处填写() ,使得输出是`50 10`。

A . a -= b

B . a += b

C . a = b - a D . a = b

【答案】C

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

【解析】本题考察通过算术运算交换两个变量数值,可将选项带入进行计算,本 题正确答案为 C。

14. 在下列代码的横线处填写() ,可以使得输出是`5`。

A . ch < '5'   

B . ch >= 5   

C . ch >= '4'

D . ch % 2 == 1

【答案】D

【考纲知识点】循环结构,字符型,ASCII 码,基本运算 (二级)

【解析】可以将选项带入排除 A ,B ,C 选项,需要注意 B 选项中 5 没有单引号, 所以表示的不是字符’5’,D 选项中 ch 虽然是字符类型,但计算时会使用对应的  ASCII 码%2 ,字符’1’到字符’9’之间,所有 ASCII 码中有 5 个是奇数,所以本题正   确答案为 D。

15. 执行以下 C++语言程序后,输出结果是() 。

A. false

B . true

C . 0

D . 1

【答案】C

【考纲知识点】循环结构,布尔型,基本运算 (二级)

【解析】题目中 i 的循环范围是 2~n , 即分别使用 n 对 2~n 之间的所有数进行求 余运算, 由于 n 能够被自身整除,所以循环结束后 isprime 的值一定为 false ,但 是 bool 类型在输出时不会输出true 或 false ,输出时只会输出 1 或 0 ,所以本题 正确答案为 C。

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

1.   明明和笑笑在“小庙会”上分别抽到一个 4GB 和 4096MB 的 U 盘,容量大的盘 是笑笑的(   )。

【答案】x

【考纲知识点】计算机的存储(二级)

【解析】本题属于考察数据单位的换算,1GB=1024MB ,4GB 和 4096MB 容量一 样大 。所以本题错误。

2.   IPv4 的地址通常用“点分十进制”的表示形式,形如(a.b.c.d),其中 a 、b、c、

d 都是 1~255 之间的十进制整数(   )。

【答案】x

【考纲知识点】计算机网络(二级)

【解析】IP 地址是一个 32 位的二进制数,通常被分隔为 4 个 8 位二进制数,常

用“点分十进制”的表示形式,形如(a.b.c.d),其中 a 、b 、c 、d 都是 0~255 之间 的十进制整数 。所以本题错误。

3.   在 C++语言中,一个程序不能有多个 main 函数。

【答案】

【考纲知识点】程序设计语言的特点(二级)

【解析】本题考察 C++程序的基本结构,一个程序只能有一个 main 函数 。所以 本题正确。

4.   在 C++语言中,标识符中可以有下划线_ ,但不能以下划线_开头。

【答案】x

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

【解析】本题考察变量的概念及定义规则。变量定义时,必须指定类型,且变量 名必须为合法标识符(只能由字母,数字,下划线组成,且不能以数字开头)。 所以本题错误。

5.   如果 a 是 int 类型的变量,而且值为 1 ,则表达式'a'的值为'1'。

【答案】x

【考纲知识点】基本数据类型(一级)

【解析】本题属于考察对不同数据类型的区分,加上单引号后'a'表示字符常量, 与变量 a 无关,且与字符常量'1'不同 。所以本题错误。

6.   在 if ... else 语句中,else 子句可以嵌套 if ... else 语句,但 if 子句不可以, 因 为会造成二义性。

【答案】x

【考纲知识点】多层分支(二级)

【解析】本题考察 if 语句的用法,if 语句可以嵌套 if...else。如果嵌套后与预期语 义不符,可以使用复合语句{ … }加以区别 。所以本题错误。

7.   while 语句的循环体至少会执行一次。

【答案】x

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

【解析】本题考察while 语句的用法,while()语句是否会执行循环体,取决于小 括号中的条件是否成立,若最开始条件不成立,则一次都不会执行循环体。所以 本题错误。

8.   C++语言中>=是运算符,但=>不是。

【答案】

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

【解析】本题考察运算符,>=是表示 “大于等于 ” 的关系运算符,=>不是 C++中 的运算符 。所以本题正确。

9.   如果 a 为 char 类型的变量,且取值为小写字母,则执行语句 a = a - 'a' + 'A'; 后,a 的值会变为与原值对应的大写字母。

【答案】

【考纲知识点】字符型(一级)

【解析】本题考察字符类型中大小写字母转换的方法,小写字母减去’a’会得到 0~25 ,加上’A’后刚好就是对应从’A’~’Z’。所以本题正确。

10. 表达式(10.0 / 2)的计算结果为 5.0 ,且结果类型为 double。

【答案】

【考纲知识点】浮点型(一级)

【解析】本题属于考察浮点数类型的计算,浮点数与整数的计算结果类型为浮点 型 。所以本题正确。

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

1.  画三角形   【问题描述】

输入一个正整数 n,请使用大写字母拼成一个这样的三角形图案(参考样例 输入输出) :三角形图案的第 1 行有 1 个字母,第 2 行有 2 个字母, 以此类推; 在三角形图案中,由上至下、 由左至右依次由大写字母 A-Z 填充,每次使用大写 字母 Z 填充后,将从头使用大写字母 A 填充。

【输入描述】

输入一行,包含一个正整数 n。 约定 2≤n≤40。 【输出描述】

输出符合要求的三角形图案。注意每行三角形图案的右侧不要有多余的空格。 【样例输入 1】

3

【样例输出 1】

A
BC
DEF

【样例输入 2】

7

【样例输出 2】

A
BC
DEF
GHIJ
KLMNO
PQRSTU
VWXYZAB

【题目大意】输出一个 n 行的大写字母递增的三角形,大写字母递增到’Z’后下一 个回到’A’重新开始递增。

【考纲知识点】基本运算(一级), 循环结构、ASCII 码、数据类型转换(二级)

【解题思路】

1.  先把 A,B,C...Z 这些大写字母看作 0,1,2...25,借助 for 循环嵌套输出数字三角形;

2.  将三角形中需要输出的数在输出时转换为大写字母输出;

3.  将数转换为大写字母时加上%26 ,确保输出到’Z’之后下一个字符为’A’。 

【参考程序】

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	int ch = 0; // 定义 ch 计数
	for (int i = 1; i <= n; i++)
	{ // 外层循环: 三角形共有 n 行
		for (int j = 1; j <= i; j++)
		{
			// 第一步可以在此处输出 ch,确保三角形的格式正确 ,再考虑将 ch 转换 成对应的大写字母
			cout << (char)('A' + (ch++) % 26); // 将输出的数转换为大写字 母
		}
		cout << endl;
	}
	return 0;
}

2.  百鸡问题   【问题描述】

“百鸡问题”是出自我国古代《张丘建算经》 的著名数学问题。 大意为: “每 只公鸡 5 元,每只母鸡 3 元,每 3 只小鸡 1 元; 现在有 100 元,买了 100 只鸡, 共有多少种方案?”

小明很喜欢这个故事,他决定对这个问题进行扩展,并使用编程解决:如果 每只公鸡 x 元 ,每只母鸡 y 元 ,每 z 只小鸡 1 元; 现在有 n 元 ,买了 m 只鸡, 共有多少种方案?

【输入描述】

输入一行,包含五个整数,分别为问题描述中的 x 、y 、z 、n 、m 。约定 1≤x, y, z ≤10 ,1≤ n, m ≤1000。

【输出描述】

输出一行,包含一个整数 C ,表示有 C 种方案。 【样例输入 1】

5  3  3  100 100

【样例输出 1】

4

【样例解释 1】

这就是问题描述中的“百鸡问题” 。4 种方案分别为: 公鸡 0 只、母鸡 25 只、 小鸡 75 只; 公鸡 4 只、母鸡 18 只、 小鸡 78 只; 公鸡 8 只、母鸡 11 只、 小鸡  81 只; 公鸡 12 只、母鸡 4 只、 小鸡 84 只。。

【样例输入 2】

1 1 1 100 100

【样例输出 2】

5151

【题目大意】

百钱买百鸡问题,输入公鸡母鸡和小鸡的价格,以及现有的钱和需要购买的鸡的 数量,计算输出方案数。

【考纲知识点】基本运算(一级) , 循环结构(二级)

【解题思路】

使用循环嵌套枚举公鸡和母鸡的数量,根据总价计算要求表示出小鸡数量,通过 判断每种方案鸡的总数是否满足要求,从而统计出正确的方案数;

【参考程序】

#include <iostream>
using namespace std;
int main()
{
	int x, y, z, n, m, cnt = 0;
	// x,y,z 分别为公鸡母鸡的价格以及小鸡的价格与数量关系
	cin >> x >> y >> z >> n >> m;
	// 枚举公鸡数量,公鸡数量小于等于总数量 m,公鸡价格 gj*x 小于等于总价格 n
	for (int gj = 0; gj * x <= n && gj <= m; gj++)
		// 枚举母鸡数量,母鸡+公鸡的数量需要小于等于总数量 m,母鸡+公鸡的价格
		// mj *y + gj *x 需要小于等于总价格 n 
		for (int mj = 0; mj * y + gj * x <= n && mj + gj <= m; mj++)
		{
			int xj = (n - gj * x - mj * y) * z; // 计算出小鸡的数量
			if (gj + mj + xj == m)				// 判断三种鸡的总数量是否等于 m
				cnt++;							// 若相等则方案数+1
		}
	cout << cnt << endl; // 最终输出正确的方案数
	return 0;
}


http://www.kler.cn/a/457884.html

相关文章:

  • ubuntu22.04录屏黑屏,飞书共享屏幕黑屏问题
  • 迟来的前端面试经验
  • DepthLab: From Partial to Complete 论文解读
  • 网络安全 | 信息安全管理体系(ISMS)认证与实施
  • 【工具推荐】XSS 扫描器-XSStrike
  • 物联网开发利器:基于web的强大的可拖拽组态软件
  • c++入门 LESSON0
  • win系统B站播放8k视频启用HEVC编码
  • flask后端开发(2):URL与视图
  • RSA公钥私钥对在线生成工具--可生成pem,xml,raw等密钥格式
  • .net core 的循环实现
  • 2469. 温度转换
  • Docker安装体验kuboard-k8s多集群管理工具
  • 关于Promise的小测验
  • 【Rust自学】7.5. use关键字 Pt.2 :重导入与换国内镜像源教程
  • Pytest基础01: 入门demo脚本
  • Bagging方法和Dropout方法的简单解释
  • Scala语言的函数实现
  • 【Java基础面试题038】栈和队列在Java中的区别是什么?
  • JVM内存结构详解
  • 正则表达式:常见问题与解决方案
  • 【魅力golang】之-反射
  • Vue项目如何设置多个静态文件;如何自定义静态文件目录
  • 【机器学习】SVM支持向量机(一)
  • Raven Glass:迈向AR领域的iPod,开启全天候佩戴的时尚新时代
  • Redis - Token JWT 概念解析及双token实现分布式session存储实战