🧱 判断题第 1 题
「程序语言的幕后世界」
1、📖 故事
C++ 和 Python 是两个“魔法师”,
他们写的代码,看起来很高级、很聪明 ✨
但真正干活的,是谁呢?
👉 是计算机底层的机器指令小兵⚙️
2、🧠 题目判断
C++、Python 都是高级语言,但最终都要靠机器指令完成。( )
3、✅ 判断
✔ 正确
4、📌 小口诀
🧙 高级语言只是“翻译官”,
🤖 真正干活的是机器指令
🧱 第 2 题 「个位数的秘密」
1、📖 故事
数字 N 想知道自己的个位数,
它有两条路可以走:
路一:
N % 10路二:
N - N / 10 * 10
2、🧠 举个例子
N = 123
123 % 10 = 3123 / 10 = 12123 - 12 * 10 = 3
👉 一模一样!
3、✅ 判断
✔ 正确
4、📌 小口诀
💡
%10和 “减去整十”
👉 都能取个位
🧱 第 3 题 「连等号的幻觉」
1、📖 看题目
代码写成这样:
(10 <= N <= 12)看起来像数学,对吧?😄
但 C++ 会按照自己的想法理解它:
2、🧠 真正的执行顺序
1️⃣ 先算:10 <= N
👉 得到true(就是 1)
2️⃣ 再算:1 <= 12
👉 当然是 true!
3、❌ 所以问题来了
N>12,
这个表达式 结果也是 true
如果你想表达的是数学中的 (10 <= N <= 12),可能不是你想要结果。
4、🧠 题目判断
当 N = 12 时,执行10 <= N后其值为true,true与12相比仍然是true。( )
5、✅ 判断
✔ 正确
⚠️ 虽然结论对,但写法非常危险
6、📌 小口诀
❌ C++ 里连续判断,不能写
a <= b <= c
✅ 要写:a <= b && b <= c
🧱 第 4 题 「平方 ≠ 原数?」
1、📖 看题目
有人说:
sqrt(N) * sqrt(N) == N一定成立,对吗?
2、🧠 真相揭秘
sqrt()是浮点数计算
浮点数 ≠ 精确数 ❗
比如:sqrt(9)可能是2.9999999
3、❌ 所以
再平方,不一定刚好等于 N
4、❌ 判断
✘ 错误
5、📌 小口诀
⚠️ 小数比较是否相等,一定要用
abs(a-b)<= 极小值,❌
不能直接使用“==”来判断。
🧱 第 5 题 「交换魔法」
1、📖 看题目
代码:
int a=2, b=3; a=a-b; b=a+b; a=b-a; printf("%d*%d=%d\n", a, b, a*b);a 与 b的值实现了交换。
2、🧠 计算一下
最终:a = 3,b = 2
输出:
3*2=6
3、✅ 判断
✔ 正确
4、📌 小口诀
✨ 这是“不用临时变量交换”的一种方式。
🧱 第 6 题 「continue 的陷阱」
1、📖 看题目
循环里全是continue:
for (i = 0; i < 10; i++) continue; cout << i;2、真相
continue不会停循环循环正常跑完
最后
i == 10
3、✅ 判断
✔ 正确
4、📌 小口诀
continue 跳过一轮
不影响 i 的增长
🧱 第 7 题「break 的突然停止」
1、📖 看题目
for (i = 1; i < 10; i++) { break; continue; } cout << i;2、🧠 执行过程
i = 1
立刻 break
循环结束
输出 i = 1
3、✅ 判断
✔ 正确
4、📌 小口诀
🛑 break 一出现
循环立刻停
🧱 第 8 题 「OK 的堆叠」
1、📖 看题目
for (int i = 0; i < 5; i++) for(int j = 0; j < i; j++) printf("OK\n");2、🧠 数一数
i=0 → 0 次
i=1 → 1 次
i=2 → 2 次
i=3 → 3 次
i=4 → 4 次
👉 总共:10 行 OK
3、✅ 判断
✔ 正确
4、📌 小口诀
🔁 本题是双重循环,外循环+内循环
总次数 = 1+2+3+4
🧱 第 9 题 「for 从 1 还是 0 开始?」
1、📖 看题目
for (i = 1; i < 5; i++) tnt += i;如果改成:
for (i = 0; i < 5; i++)2、🧠 区别来了
从 0 开始 👉 多加一个 0
结果是一样
3、✅ 判断
✔ 正确
4、📌 小口诀
起点不同,
结果可能完全不同,但是本题多加一个0,碰巧没改变结果。
🧱 第 10 题 奇怪的代码
1、📖 看题目
for (i = 0; i < 5; i++) for (i = 0; i < i; i++) continue; printf("%d\n", i);这段代码结构很奇怪,循环内容没有大括号{ },而且内循环,外循环都是全局变量i。
2、输出是什么?
for (i = 0; i < 5; i++) //外循环是用全局变量i计数 for (i = 0; i < i; i++) //内循环也用全局变量i计数,当外循环i++后,进入内循环又赋值为0 continue; //本题为死循环 printf("%d\n", i);死循环的结果,是没有输出。
3、❌ 判断
✘ 错误
4、📌 小口诀
循环内容要有大括号来包裹,
没有就可能跑到循环外面去。
内循环,外循环,变量要分开,
不要使用全局变量互相来影响。