GESP2026年6月认证C++三级( 第二部分判断题(1-10))精讲 第一题判断反码运算时产生的进位需要循环进位即最高位产生的进位要加回到结果的最低位。✅答案正确√1、故事1魔法学院有一种非常古老的数字计算方法——反码运算。2它有一个奇怪的规定。普通加法11111111 00000001 --------- 100000000最高位多出来一个1。现代补码直接丢掉。3而反码世界却说这个1不能浪费于是它会00000000 1 ------- 000000013这就叫循环进位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位补码最大的表示范围是 -127127。❌️答案错误❌️故事1、数字王国有8个士兵。其中第一个负责符号另外7个负责数字2、补码能够表示10000000 ↓ -128最大的01111111 ↓ 1273、所以整个范围-128 ↓ 127这是必须要能背出来的。第四题判断判断质数只需要枚举到√n即可。✅答案正确√故事1、小杨想检查100是不是质数。如果一个一个试2 3 4 …… 99太慢了。2、汉克老师说任何因数都是成对出现。例如2 × 50 4 × 25 5 × 20 10 ×10发现没有一旦超过√10010后面的其实前面都检查过了。3、因此判断质数for(i2;i*in;i)即可。效率一下提高很多。所以本题正确。第五题判断如果 ((a1)1) 为 true则a一定是奇数。✅答案正确√故事1、每个数字都有一扇最右边的小门。偶数 最后一位 01例如6 1102最低位03奇数7 1114最低位12、所以a1其实就是把最后一位留下。3、例如13 1101 0001 0001结果为1。说明最低位是1。就是奇数。所以本题正确。第六题判断十六进制 CCF 转换成二进制、八进制、十进制分别是110011001111、6317、3279。❌答案错误×故事1、三个十六进制数字C C F2、分别对应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 32795、真正答案3279而题目写的是3269错了。6、因此整道判断错误。❌️第七题1、题目程序string nameGESP; cout name[false] name[true] name[11] name[71] endl;判断输出结果是 GESP。✅答案正确√故事1、字符串G E S P编号0 1 2 3看看四个下标。2、第一个false就是0输出G3、第二个true就是1输出E4、第三个11 2输出S5、第四个71 3输出P最终GESP所以正确。第八题判断给出的 Hello World 程序是否能够正常编译运行。❌️答案错误❌️故事1、程序#includebits/stdc.h using namespace std; int main() { coutHello world!endl; return 0; }这是初学者经常使用的万能头文件程序。包含✅万能头文件✅命名空间✅主函数在DEVC中可以正常编译。2、但是题目说的是编译器没有说DEVC编译器如果学生使用的编译器没有收录bits/stdc.h文件则无法编译。虽然它在竞赛中非常流行但在工业级开发中资深工程师通常禁止使用它。如果你在使用 Visual Studio 等不支持该头文件的 IDE 时想体验其便利可以通过手动创建文件夹和文件的方式模拟添加但这并不改变其非标准和潜在性能问题的本质。‌注意它是竞赛编程的利器却是工程开发的“坏习惯”。请根据代码的生命周期和使用场景酌情选择。3、如果程序改为:#includeiostream结果是肯定可以编译。第九题判断模拟算法不能增加任何判断否则就不是模拟算法。❌答案错误×故事1、很多同学认为模拟就是别人怎么做程序就一模一样。其实模拟算法不是这样子的。2、例如洗牌。现实拿牌 交换 判断 继续程序当然也可以if(...)或者while(...)3、模拟算法的核心是按照题目的规则一步一步模拟整个过程。至于中间有没有if else switch continue完全允许。4、所以题目说不能增加判断。这是错误的。第十题判断if(s[i]0s[i]9)可以判断是不是数字。❌答案错误×故事1、这题容易掉坑注意题目说的是int 型数字 s[i]2、而条件09比较的是字符ASCII码。2、来看0 489 57所以if(c0c9)这里的c是字符char例如char c5;才能判断它是不是字符数字。3、如果int x5;那么548显然是假。因此不能用来判断整数5是不是0~9之间。4、如果判断整数if(x0x9)才是正确写法。因此本题错误。 十道判断题总结题号答案核心知识点1√反码循环进位2√补码快速计算技巧3❌️8位补码范围-1281274√质数只需枚举到 √n5√a1判断奇偶6❌️CCF 十进制应为3279不是32697√false0、true1、移位运算作下标8❌️标准 C 程序才一定能够编译运行要注意编译器环境9❌️模拟算法允许使用判断语句10❌️0~9只能判断字符不适用于int类型数字这十道判断题几乎覆盖了三级考试中容易混淆的知识点原码/反码/补码、位运算、字符与整数、字符串下标、模拟算法以及质数优化。把这些理解透彻今后遇到类似题目就能快速判断不容易被出题人的“小陷阱”迷惑。