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 类型的取值范围为 − 2^  31 2 ^ 31 − 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;
}

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值