


一、判断题第1题:cin 和 scanf 是干什么的?
题目说:
C++程序执行
cin或scanf语句时,通常是使用键盘等输入设备来给某个变量的值。
答案:
✅ 正确
① cin是什么?
我们经常写:
int a;
cin >> a;
它的意思是:
"请从输入设备读取一个整数,放进变量
a里面。"
比如我们运行程序:
请输入一个数字:
25
那么:
a = 25
② scanf呢?
在 C++ 中也经常能看到:
int a;
scanf("%d", &a);
它同样可以从键盘输入数据。
所以:
cin
scanf
都可以完成:
输入数据。
🧠 记忆点
把变量想象成一个小盒子:
键盘 → 输入数字 → 小盒子
所以:
cin >> a;
就像:
"把键盘输入的东西放进
a盒子。"
因此:
✅ 第1题:正确
二、判断题第2题:n % 100能得到三位数的最高位吗?
题目说:
如果
n为3位的正整数,则 C++ 表达式n % 100能得到最高位。如n=123,则表达式值为1。
答案:
❌ 错误
这是一道非常经典的"数字拆分"陷阱。
① %到底是什么?
n % 100
表示:
n除以100以后剩下的余数。
例如:
123 ÷ 100 = 1 ...... 23
所以:
123 % 100
得到:
23
不是:
1
② 那么三位数的最高位怎么求?
例如:
123
想得到百位:
1
应该:
123 / 100
因为整数除法:
123 / 100 = 1
所以:
/100→ 得到最高位
%100→ 得到后两位
🧙♂️ 数字拆分魔法
对于:
12345
%10
抓个位:
12345 % 10 = 5
/10
砍掉个位:
12345 / 10 = 1234
%100
抓最后两位:
12345 % 100 = 45
/100
砍掉最后两位:
12345 / 100 = 123
所以一定要记住:
%负责"留下右边"
/负责"砍掉右边"
因此第2题:
❌ 错误
三、判断题第3题:这个循环会输出20吗?
代码:
int i;
for (i = 0; i < 20; i += 3)
if (i % 3 != 0)
continue;
cout << i;
题目说:
执行后输出20。
答案:
❌ 错误
第一步:看 i怎么变化
循环:
for (i = 0; i < 20; i += 3)
所以:
i = 0
i = 3
i = 6
i = 9
i = 12
i = 15
i = 18
i = 21
什么时候停止?
当:
i = 21
检查:
21 < 20
❌
所以循环结束。
第二步:continue有没有影响?
看看:
if (i % 3 != 0)
continue;
但是:
0 % 3 = 0
3 % 3 = 0
6 % 3 = 0
9 % 3 = 0
......
18 % 3 = 0
它们全部都是3的倍数。
所以:
i % 3 != 0
始终是:
false
因此 continue 一次都没有真正触发。
第三步:循环结束
最终:
i = 21
所以:
cout << i;
输出:
21
不是20。
⭐ 这里有一个考试秘诀
看到:
for (i = 0; i < 20; i += 3)
不要想:
"最大应该是18,所以输出18。"
因为循环结束后还有:
i += 3;
所以:
18 → 21
然后发现:
21 < 20
不成立。
最终:
i = 21
因此:
❌ 第3题错误
四、判断题第4题:10和10,谁大?
代码:
int N, M;
cin >> N >> M;
if (N > M)
printf("%d大于%d", N, M);
else
printf("%d小于%d", N, M);
题目说:
如果输入10和10,则输出"10小于10"。
答案:
✅ 正确
我们代入:
N = 10
M = 10
先判断:
N > M
也就是:
10 > 10
显然:
❌ 不成立。
所以程序进入:
else
输出:
10小于10
🚨 但是这里有一个很有意思的问题
现实数学中:
10 = 10
既不是:
10 > 10
也不是:
10 < 10
程序却输出:
10小于10
为什么?
因为程序写的是:
if (N > M)
...
else
...
它只判断:
"N是不是大于M?"
如果不是,就全部扔进 else。
也就是说:
N > M → 大于
其他情况 → 小于
而"其他情况"其实包括:
N < M
N == M
🧠 这是非常重要的编程思想
程序员写代码的时候:
程序怎么写,就怎么执行。
不能用我们脑袋里的"常识"替代程序真正的逻辑。
所以这句话:
✅ 正确
五、判断题第5题:这个程序能计算1到N的和吗?
代码:
int N, tot;
cin >> N;
tot = 0;
while (N > 0) {
tot += N;
N -= 1;
}
cout << tot;
题目说:
如果输入大于0的整数,可以求出1到N之和。
答案:
✅ 正确
我们来玩"倒计时游戏"
假设:
N = 5
开始:
tot = 0
第1轮
tot += N
就是:
tot = 0 + 5 = 5
然后:
N -= 1
变成:
N = 4
第2轮
tot = 5 + 4 = 9
然后:
N = 3
第3轮
tot = 9 + 3 = 12
第4轮
tot = 12 + 2 = 14
第5轮
tot = 14 + 1 = 15
然后:
N = 0
循环结束。
最终:
tot = 15
而:
1 + 2 + 3 + 4 + 5 = 15
完全正确。
🧠 这里的两个变量很好理解
可以把:
N
想成:
倒计时牌
而:
tot
想成:
存钱罐
每轮:
拿当前的N放进存钱罐
N再减1
于是:
5 → 4 → 3 → 2 → 1
全部加起来。
所以:
✅ 第5题正确
六、判断题第6题:正负数的 % 会不会不一样?
题目说:
在 C++ 中,表达式
2 % 2与(-2) % 2的值相同。
答案:
✅ 正确
我们分别算。
第一个:
2 % 2
2除以2:
2 ÷ 2 = 1 ...... 0
所以:
2 % 2 = 0
第二个:
(-2) % 2
也是整除:
-2 ÷ 2
余数:
0
所以:
(-2) % 2 = 0
两者:
0 = 0
因此:
✅ 正确
⭐ 小提醒
负数 % 的题目确实容易让人紧张。
但是这里很简单:
只要能够整除,余数就是0。
例如:
10 % 5 = 0
-10 % 5 = 0
所以这一题不用害怕负号。
七、判断题第7题:z++到底输出增加前还是增加后的值?
代码:
float z = 12.0;
z = z / 4;
z--;
cout << z++;
题目说:
执行后输出2。
答案:
✅ 正确
这道题非常适合讲清楚:
后置
++
第一步:开始
z = 12.0
第二步:除以4
z = z / 4;
所以:
z = 3.0
第三步:z--
z--;
意思:
z减1。
所以:
z = 2.0
第四步:最关键!
cout << z++;
z++叫:
后置自增
它的特点是:
先使用,再加1。
所以输出的时候:
先输出 2
然后:
z = 3
因此屏幕上看到:
2
所以题目说:
输出2。
是:
✅ 正确
🧠 ++有两个兄弟
++z
先加1,再使用
z++
先使用,再加1
可以记成:
++z:先长大,再做事。
z++:先做事,再长大。
八、判断题第8题:变量名里有几个下划线会不会出问题?
题目说:
在 C++ 代码中,如果两个变量名都包含下划线
_,但数目不同,可能会导致编译器无法识别而报错。
答案:
❌ 错误
举个例子
下面这些变量名:
int a_b;
int a__b;
int a___b;
都是不同的变量名。
C++允许在变量名中使用下划线。
所以:
a_b
a__b
a___b
并不会因为"下划线数量不同"就让编译器糊涂。
编译器完全可以区分它们。
🧙♂️ 想象成三间不同的房间
a_b
是一间房。
a__b
是另一间房。
a___b
又是另一间房。
虽然名字很像,但是:
名字不同,就是不同的变量。
⚠️ 真正需要注意的是
C++变量名不能随便写。
例如:
int 123abc;
这种就不行。
但是:
int abc_123;
int a_b;
int a__b;
都可以。
所以第8题:
❌ 错误
九、判断题第9题:double x = 27 % 12结果不可预测?
题目说:
C++变量
x是double类型,则表达式x = 27 % 12的结果是不可预测的。
答案:
❌ 错误
这道题看起来有点吓人,其实非常简单。
第一步:先算 %
27 % 12
意思:
27 ÷ 12 = 2 ...... 3
所以:
27 % 12 = 3
第二步:再放进 double
题目是:
double x;
x = 27 % 12;
右边:
27 % 12 = 3
于是相当于:
x = 3;
因为 x 是 double,实际保存时可以理解为:
x = 3.0
结果非常确定。
⭐ 一个非常重要的知识点
%要求参与运算的是:
整数类型。
这里:
27
12
都是整数。
所以:
27 % 12
完全合法。
算完得到:
3
然后再把这个结果放进:
double x
没有问题。
所以:
❌ 第9题错误
十、判断题第10题:这个程序最后真的输出3吗?
代码:
int ans = 0;
for (int idx = 1; idx <= 7; idx += 2) {
if (idx == 5)
continue;
if (idx*idx > 30)
break;
ans += idx;
}
cout << ans;
题目说:
执行后输出3。
答案:
❌ 错误
🌟 这道题是"continue大挑战"
先看:
for (int idx = 1; idx <= 7; idx += 2)
所以:
idx:
1
3
5
7
我们一轮一轮看。
第1轮:idx = 1
判断:
if (idx == 5)
也就是:
1 == 5
❌
继续往下。
再看:
if (idx > 30)
1 > 30
❌
所以:
ans += idx;
即:
ans = 0 + 1
得到:
ans = 1
第2轮:idx = 3
3 == 5
❌
3 > 30
❌
所以:
ans = 1 + 3
得到:
ans = 4
第3轮:idx = 5
来了!
if (idx == 5)
continue;
条件成立:
5 == 5
所以:
continue;
出现!
💨 这一轮直接跳过!
也就是说:
ans += idx;
根本不会执行。
所以:
ans 还是4
第4轮:idx = 7
7 == 5
❌
然后:
7 * 7 > 30
正确
循环结束
所以:
ans = 4
因此:
❌ 第10题错误
🎯 第二部分10道判断题答案汇总
根据这份试卷的题面逐题分析:
| 题号 | 判断 | 核心知识 |
|---|---|---|
| 1 | ✅ 对 | cin、scanf输入 |
| 2 | ❌ 错 | /与%拆数字 |
| 3 | ❌ 错 | for循环结束值 |
| 4 | ✅ 对 | if-else逻辑 |
| 5 | ✅ 对 | while求1~N的和 |
| 6 | ✅ 对 | %与负数 |
| 7 | ✅ 对 | 后置z++ |
| 8 | ❌ 错 | 变量名与下划线 |
| 9 | ❌ 错 | %与double |
| 10 | ❌ 错 | continue、循环模拟 |
🌟 给大家的"判断题破案法"
做 C++ 判断题,千万不要凭"感觉"。
可以固定使用这套 四步破案法:
第一步:圈出关键词
例如:
% / ++ -- break continue
这些都是"危险机关"。
第二步:给变量写初值
比如:
int ans = 0;
就在草稿纸写:
ans = 0
第三步:一轮一轮模拟
尤其看到:
for
while
就画:
第1轮
第2轮
第3轮
......
第四步:最后再判断"对还是错"
千万不要:
"看起来应该是对的。"
而应该:
"我已经把程序跑完了,所以我知道它到底输出什么。"
🧠 最后送大家一张"C++判断题魔法表"
| 看到 | 马上想到 |
|---|---|
cin >> a |
从输入读数据 |
a % 10 |
取个位 |
a / 10 |
去掉个位 |
i++ |
i加1 |
i-- |
i减1 |
++i |
先加再用 |
i++ |
先用再加 |
continue |
跳过本轮 |
break |
结束整个循环 |
for |
初始化→条件→循环体→更新 |
while |
先判断条件,再决定进不进入 |
% |
取余数 |
double |
可以保存小数 |
其中最值得同学们记住的一句话是:
做程序题,不要"猜程序",要"跑程序"。
哪怕是拿草稿纸,自己用手把变量一步一步走一遍,程序就像小火车一样,最后一定能找到答案。









