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
<<name[false]
<<name[true]
<<name[1<<1]
<<name[7>>1]
<<endl;

判断:

输出结果是 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<bits/stdc++.h>

using namespace std;

int main()
{
    cout<<"Hello world!"<<endl;
    return 0;
}

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

包含:

✅万能头文件

✅命名空间

✅主函数

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


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

如果学生使用的编译器,没有收录<bits/stdc++.h>文件,则无法编译。

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

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


3、如果程序改为:

复制代码
#include<iostream>

结果是肯定可以编译。



第九题

判断:

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

答案:错误(×)


🌈故事

1、很多同学认为:

模拟就是:

别人怎么做,

程序就一模一样。

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


2、例如:

洗牌。

现实:

复制代码
拿牌

交换

判断

继续

程序当然也可以:

复制代码
if(...)

或者:

复制代码
while(...)

3、模拟算法的核心是:

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

至于中间有没有:

复制代码
if

else

switch

continue

完全允许。


4、所以:

题目说:

不能增加判断。

这是错误的。



第十题

判断:

复制代码
if(s[i]>='0'&&s[i]<='9')

可以判断是不是数字。

答案:错误(×)


🌈故事

1、这题容易掉坑!

注意题目说的是:

int 型数字 si


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=0true=1、移位运算作下标
8 ❌️ 标准 C++ 程序才一定能够编译运行,要注意编译器环境
9 ❌️ 模拟算法允许使用判断语句
10 ❌️ '0'~'9' 只能判断字符,不适用于 int 类型数字

这十道判断题几乎覆盖了三级考试中容易混淆的知识点:原码/反码/补码、位运算、字符与整数、字符串下标、模拟算法以及质数优化。把这些理解透彻,今后遇到类似题目就能快速判断,不容易被出题人的"小陷阱"迷惑。