


🏰 第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、🌟程序推理小游戏
这题考察一步一步模拟程序运行。
像机器人执行命令:
-
变量变化
-
循环计算
-
最后输出结果
最终数组元素的值是:
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
🏆知识点总结:
✅ 数组越界的危险
✅ 位运算技巧
✅ 判断字符范围
✅ 程序模拟能力
✅ 表达式真假判断






