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


🏆知识点总结:

✅ 数组越界的危险

✅ 位运算技巧

✅ 判断字符范围

✅ 程序模拟能力

✅ 表达式真假判断


相关推荐
别动我齐刘海40 分钟前
机器人运动控制学习4——状态估计 State Estimation
c++·人工智能·学习·目标检测·机器学习·机器人·自动驾驶
学习星球1 小时前
OpenHarness 全面配置教学——从游戏开发工作流引入
c++·游戏·ai·ai编程
wWYy.1 小时前
C++与C的区别
c语言·c++
程序员与背包客_CoderZ6 小时前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
进击的_鹏6 小时前
从零开始的 Redis 学习
服务器·数据库·c++·redis·缓存
_Narcissus_7 小时前
链表算法题和静态链表
数据结构·c++·笔记·算法·链表·ai·力扣
布莱克6057 小时前
C++拷贝构造与拷贝赋值运算符的区别详解
开发语言·c++
啦啦啦啦啦zzzz8 小时前
时间轮定时器
linux·服务器·网络·c++·定时器
此生决int8 小时前
深入理解C++系列(15)——AVL树
开发语言·c++
一只旭宝8 小时前
预约系统版本2(pyhton+flask可视化版本)
服务器·数据库·c++·笔记·python·flask