GESP2026年6月认证C++三级( 第二部分判断题(1-10))精讲



第一题

判断:

反码运算时,产生的进位需要循环进位,即最高位产生的进位要加回到结果的最低位。

✅答案:正确(√)


1、🌈故事

(1)魔法学院有一种非常古老的数字计算方法——

反码运算。


(2)它有一个奇怪的规定。

普通加法:

11111111 +00000001 --------- 100000000

最高位多出来一个1。

现代补码:

直接丢掉。


(3)而反码世界却说:

"这个1不能浪费!"

于是它会:

00000000 +1 ------- 00000001

(3)这就叫:

循环进位(End Around Carry)

也就是:

最高位产生的进位,

重新加到最低位。


2、为什么?

因为反码存在:

+0 00000000 -0 11111111

为了保证计算正确,

必须采用循环进位。


3、🎯 本题:

最高位产生的进位要重新加回来。

正确。



第二题

判断:

-11 的补码的一种计算方式是从右往左扫描正数的二进制形式,遇到第一个1之后,左边全部取反。

✅答案:正确(√)


1、🌈故事

(1)很多同学都会:

原码 ↓ 取反 ↓ 加1

但是考试时很慢。


(2)汉克老师告诉大家一个秘诀。

例如:

11 00001011

从右往左找。

00001011 ↑ 第一个1

这个1以及右边保持不动。

左边全部翻转。

11110101

这就是

-11

的补码。

是不是比:

先取反再加1

快很多?


(3)所以:

这个技巧完全正确。



第三题

判断:

一个8位补码最大的表示范围是 -127~+127。

❌️答案:错误(❌️)


🌈故事

1、数字王国有8个士兵。

其中:

第一个负责:

符号

另外7个负责:

数字

2、补码能够表示:

10000000 ↓ -128

最大的:

01111111 ↓ 127

3、所以整个范围:

-128 ↓ 127

这是必须要能背出来的。



第四题

判断:

判断质数,只需要枚举到√n即可。

✅答案:正确(√)


🌈故事

1、小杨想检查:

100

是不是质数。

如果一个一个试:

2 3 4 …… 99

太慢了。


2、汉克老师说:

"任何因数都是成对出现。"

例如:

2 × 50 4 × 25 5 × 20 10 ×10

发现没有?

一旦超过:

√100=10

后面的其实前面都检查过了。


3、因此:

判断质数:

for(i=2;i*i<=n;i++)

即可。

效率一下提高很多。

所以本题正确。



第五题

判断:

如果 ((a&1)==1) 为 true,则a一定是奇数。

✅答案:正确(√)


🌈故事

1、每个数字都有一扇最右边的小门。

偶数 最后一位 0

(1)例如

6 110

(2)最低位:

0

(3)奇数:

7 111

(4)最低位:

1

2、所以:

a&1

其实就是:

把最后一位留下。


3、例如:

13 1101 & 0001 = 0001

结果为1。

说明:

最低位是1。

就是奇数。

所以本题正确。



第六题

判断:

十六进制 CCF 转换成二进制、八进制、十进制分别是:110011001111、6317、3279。

❌答案:错误(×)


🌈故事

1、三个十六进制数字:

C C F

2、分别对应:

C 1100 C 1100 F 1111

合起来:

110011001111

正确。


3、再转八进制:

110011001111 ↓ 110 011 001 111 ↓ 6 3 1 7

得到:

6317

也正确。


4、十进制呢?

计算:

12×16² + 12×16 + 15 = 3072 + 192 + 15 = 3279

5、真正答案:

3279

而题目写的是:

3269

错了。


6、因此:

整道判断错误。❌️



第七题

1、题目程序:

string name="GESP"; cout <>1] <

判断:

输出结果是 GESP。

✅答案:正确(√)


🌈故事

1、字符串:

G E S P

编号:

0 1 2 3

看看四个下标。


2、第一个

false

就是:

0

输出:

G

3、第二个

true

就是:

1

输出:

E

4、第三个

1<<1 = 2

输出:

S

5、第四个

7>>1 = 3

输出:

P

最终:

GESP

所以正确。



第八题

判断:

给出的 Hello World 程序是否能够正常编译运行。

❌️答案:错误(❌️)


🌈故事

1、程序:

#include using namespace std; int main() { cout<<"Hello world!"<

这是初学者经常使用的,万能头文件程序。

包含:

✅万能头文件

✅命名空间

✅主函数

在DEVC++中,可以正常编译。


2、但是题目说的是编译器,没有说DEVC++编译器,

如果学生使用的编译器,没有收录文件,则无法编译。

虽然它在竞赛中非常流行,但在工业级开发中,资深工程师通常禁止使用它。如果你在使用 Visual Studio 等不支持该头文件的 IDE 时想体验其便利,可以通过手动创建文件夹和文件的方式模拟添加,但这并不改变其非标准和潜在性能问题的本质。

‌注意

:它是竞赛编程的利器,却是工程开发的“坏习惯”。请根据代码的生命周期和使用场景酌情选择。


3、如果程序改为:

#include

结果是肯定可以编译。



第九题

判断:

模拟算法不能增加任何判断,否则就不是模拟算法。

❌答案:错误(×)


🌈故事

1、很多同学认为:

模拟就是:

别人怎么做,

程序就一模一样。

其实模拟算法不是这样子的。


2、例如:

洗牌。

现实:

拿牌 交换 判断 继续

程序当然也可以:

if(...)

或者:

while(...)

3、模拟算法的核心是:

按照题目的规则一步一步模拟整个过程。

至于中间有没有:

if else switch continue

完全允许。


4、所以:

题目说:

不能增加判断。

这是错误的。



第十题

判断:

if(s[i]>='0'&&s[i]<='9')

可以判断是不是数字。

❌答案:错误(×)


🌈故事

1、这题容易掉坑!

注意题目说的是:

int 型数字 s[i]


2、而条件:

'0'
'9'

比较的是:

字符ASCII码

。


2、来看:

'0' 48
'9' 57

所以:

if(c>='0'&&c<='9')

这里的c是字符(char)

,例如:

char c='5';

才能判断它是不是字符数字。


3、如果:

int x=5;

那么:

5>=48

显然是假。

因此不能用来判断整数5是不是0~9之间。


4、如果判断整数:

if(x>=0&&x<=9)

才是正确写法。

因此本题错误。


🎯 十道判断题总结

题号答案核心知识点
1√反码循环进位
2√补码快速计算技巧
3❌️8位补码范围:-128~127
4√质数只需枚举到 √n
5√a&1判断奇偶
6❌️CCF 十进制应为3279,不是3269
7√false=0、true=1、移位运算作下标
8❌️标准 C++ 程序才一定能够编译运行,要注意编译器环境
9❌️模拟算法允许使用判断语句
10❌️'0'~'9'只能判断字符,不适用于int类型数字

这十道判断题几乎覆盖了三级考试中容易混淆的知识点:原码/反码/补码、位运算、字符与整数、字符串下标、模拟算法以及质数优化

。把这些理解透彻,今后遇到类似题目就能快速判断,不容易被出题人的“小陷阱”迷惑。