GESP2023年9月认证C++三级( 第一部分选择题(9-15))


🏰 第9题 哪个说法不正确?

题目:关于数组的说法,不正确的是( )

A. 可以定义0个元素的数组

B. 不能定义-1个元素的数组

C. 数组下标越界访问会产生编译错误

D. 程序运行时数组越界,程序仍可能正常结束

✅答案:C


1、🌟数组城堡的规则

数组像一排房间:

复制代码
int a[3];

有3个房间:

下标
0
1
2

2、🔍分析选项

A ✅

允许定义空数组


B ✅

房间数量不能是负数,当然不行!


C ❌(错误答案)

复制代码
a[10] = 5;

虽然越界了,但很多时候 编译器看不出来,程序还能编译通过。

因为编译器不会时时刻刻盯着运行时的下标值。


D ✅

越界访问后:

  • 可能崩溃💥

  • 可能数据错乱😵

  • 也可能表面正常😮


✅ 所以不正确的是:

C



🏰 第10题 哪个表达式一定为true?

题目:若 a 是 int 类型,哪个一定为 true?

A. a + 1000 - 1000 == a

B. a * 2 / 2 == a

C. (a & 1) == 1

D. (a | 1) == a + 1

✅答案:A


1、🌟真假判断魔法


A ✅ 一定成立

先加1000,如果数字溢出了,正数可能变成负数,

但是负数再减1000,你会发现,有回来了。


B ❌

如果数字很大,乘2时可能溢出后,正数变负数,

再除以2,负数前面会自动补1,还是负数,不会回到过去的正数,所以错误。


C ❌

只对奇数成立。

例如:

复制代码
4 & 1 = 0

D ❌

若 a 本来就是奇数:

复制代码
5 | 1 = 5
a+1 = 6

不相等。


2、✅答案:A



🏰 第11题 哪个不能判断 a==b?

题目:

A. ((a>=b)&&(a<=b))

B. ((a>>1)==(b>>1))

C. ((a+b)==(a+a))

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

✅答案:B


1、🌟真假侦探社


A ✅

既不大于,也不小于,那就是相等。


B ❌ 不能判断

右移1位,相当于都缩小一半。

例如:

复制代码
a = 4   -> 2
b = 5   -> 2

结果一样,但 a≠b!


C ✅

两边减去 a:

复制代码
a+b = a+a
=> b = a

D ✅

异或规则:

相同为0,不同为1。

若整体结果是0,说明每一位都相同,所以 a=b。


2、✅答案:B



🏰 第12题 判断大写字母

题目:a是char变量,哪个能判断 a 是大写字母?

A. a-'A'<=26

B. 'A'<=a<='Z'

C. 'A'<='a'<='Z'

D. ('A'<=a)&&(a<='Z')

✅答案:D


1.、🌟字母守门员

大写字母范围:

复制代码
A 到 Z

2、为什么 A 错?

a - 'A' 还要大于等于0才行,少条件。


3、为什么 B 错?

很多新手会写:

复制代码
'A' <= a <= 'Z'

但 C++ 会先算:

复制代码
('A' <= a)

结果变成 true 或 false(1或0),再去和 'Z' 比较,逻辑乱掉了!


3、正确写法:

复制代码
('A' <= a) && (a <= 'Z')

左边条件成立,右边条件也成立。


4、✅答案:D



🏰 第13题 输出20 10

题目:填空后输出 20 10

✅答案:B

复制代码
b = a >> 8;
a = a & 0xff;

1、🌟拆礼物盒

想象 a 里面装了两个数字:

  • 高位部分:20

  • 低位部分:10


第一步:右移8位

复制代码
b = a >> 8;

把高位拿出来 → 20


第二步:保留低8位

复制代码
a = a & 0xff;

像筛子一样,只留下最后8位 → 10


所以最后实现了数值交换:

复制代码
20 10

2、✅答案:B



🏰 第14题 输出120

题目:填空后输出120

✅答案:D

复制代码
res *= array[i];

1、🌟乘法工厂

数组里装着一些数,例如:

复制代码
1 2 3 4 5

如果不断相乘:

复制代码
1×2×3×4×5 = 120

2、为啥选项都不对?

res=0

复制代码
0*1*2*3*4*5 = 0

不是120!


3、✅答案:D



🏰 第15题 输出是多少?

题目答案:B(28)

✅答案:B


1、🌟程序推理小游戏

这题考察一步一步模拟程序运行。

像机器人执行命令:

  1. 变量变化

  2. 循环计算

  3. 最后输出结果

最终数组元素的值是:

cpp 复制代码
  数组 0 1 1 2 2 4 2 6 4 6
  
  索引 0 1 2 3 4 5 6 7 8 9
cpp 复制代码
1+1+2+2+4+2+6+4+6 =28

2、✅答案:

B


🏆知识点总结:

✅ 数组越界的危险

✅ 位运算技巧

✅ 判断字符范围

✅ 程序模拟能力

✅ 表达式真假判断


相关推荐
Wave8455 小时前
C++继承详解
开发语言·c++·算法
Tairitsu_H5 小时前
C++类基础概念:定义、实例化和this指针
开发语言·c++
不想写代码的星星5 小时前
C++17 string_view 观察报告:好用,但有点费命
c++
努力努力再努力wz5 小时前
【Linux网络系列】深入理解 I/O 多路复用:从 select 痛点到 poll 高并发服务器落地,基于 Poll、智能指针与非阻塞 I/O与线程池手写一个高性能 HTTP 服务器!(附源码)
java·linux·运维·服务器·c语言·c++·python
努力努力再努力wz5 小时前
【Linux网络系列】万字硬核解析网络层核心:IP协议到IP 分片重组、NAT技术及 RIP/OSPF 动态路由全景
java·linux·运维·服务器·数据结构·c++·python
minji...5 小时前
Linux 线程同步与互斥(四) POSIX信号量,基于环形队列的生产者消费者模型
linux·运维·服务器·c语言·开发语言·c++
王老师青少年编程6 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【排序贪心】:拼数
c++·算法·贪心·csp·信奥赛·排序贪心·拼数
程序猿编码6 小时前
给Linux程序穿“隐身衣”——ELF运行时加密器全解析(C/C++代码实现)
linux·c语言·c++·网络安全·elf·内存安全
John_ToDebug6 小时前
从 Win10 到 Win11 22H2+:任务栏美化中的“蒙版”和“Hover 色块”渲染原理解析
c++·chrome·windows