当前位置: 首页 > news >正文

GESP认证C++编程考情分析及题解 | 202606 一级

考情分析

一、单项选择题(共15题)

题号考察知识点
1计算机基础— 输入设备辨析:湿度传感器采集数据送入系统,属于输入设备
2计算机操作— IDE编辑区功能:支持查找替换、多步撤销、缩进调整;注释可混用中英文
3C++语法— 类型转换:intdouble混合运算时自动提升为浮点型,3+3.5=6.5
4运算符优先级— 一元负号-优先级高于*%*%同优先级左结合;-2*(2%4)=-4与原式0不同
5变量赋值— 值传递:b=a后修改a不影响b,输出4 3
6输入输出cin读取int时遇非数字字符停止,2026-6-27读取到2026
7条件分支else包含N==M情况,输入3 3输出B 0
8运算符辨析+==+区别:cnt=+1等价于cnt=(+1)即赋值为1
9循环逻辑— 观察输出序列找规律:num到11后/=2得5,其余+=1
10循环控制continue跳过其后所有语句,cout << i << "#"永不执行
11循环与条件— 从i=2开始试探因子,15输出0#1#
12循环执行— 原代码tot累加10次得10;修改条件后循环次数变少
13数位提取— 十位数字:(n/10)%10,先去掉个位再取余
14取模运算— 秒针循环位置:(start+n)%60;回到12点方向即pos==0
15质数判定i<=N会导致N%N==0恒成立,所有数被判为非质数

二、判断题(共10题)

题号考察知识点答案
1AI眼镜内置操作系统并支持无线连接A
2(n/10)%10(n%100)/10都取十位数字A
3i从0开始每次加3,i%3恒为0,break永不执行,输出21B
4rst初始化为0,累乘结果恒为0B
5N%10取个位,N/=10去个位,可逐位输出A
6printf("\n")printf("%c",'\n')都输出换行符A
7%操作数需为整型,2.5%2编译报错B
8total未初始化,值为随机数,结果不可预测B
9true转整型为1,1+2=3非4B
10删除continuex==2时也会输出,输出变为1,2,3,4B

三、编程题(共2题)

题号题目名称难度考察算法一句话思路总结
A去旅行直接模拟读入四个价格,计算三种方案总价(直飞a aa、高铁+飞机b + c b+cb+c、高铁+高铁b + d b+db+d),用min({a, b+c, b+d})取最小值输出,时间复杂度O ( 1 ) O(1)O(1),空间复杂度O ( 1 ) O(1)O(1)
B交税直接模拟 / 分段函数循环 12 个月,每月若报酬x > 800 x > 800x>800则累加( x − 800 ) × 0.2 (x-800) \times 0.2(x800)×0.2,最后printf("%.2lf", ans)保留两位小数输出,时间复杂度O ( 1 ) O(1)O(1),空间复杂度O ( 1 ) O(1)O(1)

单选题

第1题

学校组织到未来农场参观,小明听讲解员介绍,在智能温室中,湿度传感器可以连续检测土壤的湿度变化,并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问,这里的湿度传感器所发挥的作用,类似于计算机系统中的哪一类组件?( )

A. 处理器

B. 存储器

C. 输入设备

D. 输出设备

【答案】:C

【解析】

湿度传感器的作用是采集外界环境数据(土壤湿度)并将数据传送给中央控制器,这与计算机中"输入设备"的功能完全一致——输入设备负责将外部信息转换为计算机可识别的数据送入系统。处理器负责运算和控制,存储器负责保存数据,输出设备负责将计算机处理结果向外呈现,均不符合传感器“采集并送入数据“的特征。故选C。

第2题

在使用某集成开发环境(比如 Dev-C++)来编辑源代码文件时,程序员经常需要在编辑区中对代码进行各种修改。以下关于在编辑区中执行的操作描述不正确的( )。

A. 可以将变量名count统一修改为number

B. 可以连续撤销最近2 22次输入的内容

C. 可以调整代码行的缩进(如按 Tab 键)

D. 在注释文本中间不能混用中英文

【答案】:D

【解析】

集成开发环境的编辑区支持查找替换功能,可以批量将变量名 count 改为number,A正确。编辑器支持多步撤销,可以连续撤销最近的多次操作,B正确。按Tab键可以调整缩进,C正确。注释文本只是被编译器忽略的文字,其中完全可以混用中文和英文,没有任何限制,D的说法不正确。故选D。

第3题

有关如下 C++ 代码的说法,正确的是( )。

floata=3+3.5;cout<<a;

A. 代码执行将报错。如果将a = 3 + 3.5改为a = 3 + 3 + 1/2将能正常执行。

B. 代码执行将报错。如果将a = 3 + 3.5改为a = 3.0 + 3.5将能正常执行。

C. 代码能正常执行,将输出6

D. 代码能正常执行,将输出6.5

【答案】:D

【解析】

表达式式 3+3.5 中,3是int 类型,3.5是double 类型。C++在混合运算时会将整型自动提升为浮点型,因此3+3.5=6.5,赋值给 float 类型的 a 后值为6.5,输出6.5,代码不会报错。A选项和B选项都认为代码会报错,不正确;且A选项中的1/2是整数除法结果为0,并非等价写法。C选项输出值应为6.5而非6。故选D。

第4题

下列 C++ 表达式与- 2 * 2 % 4的值不同的是( )。

A.- (2 * 2) % 4

B.(- 2 * 2) % 4

C.- 2 * (2 % 4)

D.(2 * 2) % - 4

【答案】:C

【解析】

一元负号 - 的优先级高于 * 和 % ,且 * 和 % 同优先级从左到右结合。原式 -2 * 2 % 4 中一元负号先作用于2得到-2,然后 -2 * 2 = -4,最后 -4 % 4 = 0。A选项-(2*2)%4 = -(4)%4 = -4%4 = 0,相同。B选项(-2*2)%4 = -(4)%4 = 0,相同。C选项-2*(2%4) = -2*2 = -4,结果为-4,与原式0不同。D选项(2*2)%-4 = 4%-4 = 0,相同。故选C。

第5题

执行如下 C++ 代码片段,其输出是( )。

inta=3;intb=a;a=4;printf("%d %d",a,b);

A.3 3

B.4 3

C.4 4

D.3 4

【答案】:B

【解析】

执行 int a = 3 后 a 为3,int b = a 将 a 的当前值3赋给b,此时b为3。随后a=4讲a修改为4,但b中保存的是之前拷贝的值3,不受影响。因此输出 4 3。故选B。

第6题

如下 C++ 代码执行时输入2026-6-27,下列说法正确的是( )。

intN;cin>>N;cout<<N;

A. 输入失败,不允许输入减号,没有输出

B. 允许输入,输出1993

C. 允许输入并原样输出2026-6-27

D. 允许输入并输出2026

【答案】:D

【解析】

cin >> N 中N是int 类型,cin 在读取整数时会逐字符解析,遇到非数字字符(减号 - 不是负号开头位置)即停止读取。输入 2026-6-27 时,cin 读取到 2026 后遇到减号 - 停止,N的值为2026,缓冲区中剩余 -6-27 未被读取。因此输出2026。故选D。

第7题

如下 C++ 代码执行时,其说法错误的是( )。

intN,M;cin>>N>>M;if(N>M)cout<<"A "<<(N-M);elsecout<<"B "<<(M-N);

A. 如果输入4 3,将输出A 1

B. 如果输入3 4,将输出B 1

C. 如果输入3 3,将输出A 0

D. 如果输入4 4,将输出B 0

【答案】:C

【解析】

代码逻辑为:当 N>M 时输出 A 和 N-M,否则(包括N == M的情况)输出 B 和 M-N。输入 4 3 时,4>3成立,输出 A 1,A正确。输入 3 4 时,3>4不成立,走else分支,输出 B 1,B正确。输入 3 3 时,3>3不成立,走else分支,输出 B 0 而非 A 0,C说法错误。输入 4 4 时,4>4不成立,走else 分支,输出 B 0,D正确。故选C。

第8题

阅读如下 C++ 代码,下列说法错误的是( )。

intcnt=0;for(inti=0;i<5;i++)cnt+=1;cout<<cnt;

A. 将cnt += 1修改为cnt = cnt + 1,执行效果相同

B. 将cnt += 1修改为cnt = 1 + cnt,执行效果相同

C. 将cnt += 1修改为cnt =+ 1,执行效果相同

D. 将cnt += 1修改为cnt = + 1 + cnt,执行效果相同

【答案】:C

【解析】

cnt += 1等价于cnt= cnt +1,A正确。cnt = 1 + cnt 与cnt=cnt + 1结果相同,B正确。。cnt =+ 1实际上被编译器解析为cnt=(+1),即把cnt赋值为正整数1,而非在原值上加1,执行效果完全不同,C错误。cnt =+1+cnt 解析为cnt =(+1)+cnt ,即cnt=1+cnt ,效果相同,D正确。故选C。

第9题

如下 C++ 代码执行后输出是1 2 3 4 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7。横线处应该先后依次填入的运算符是( )。

intnum=1;for(inti=0;i<35;i++){printf("%d ",num);if(num _______10)num _______2;elsenum _______1;}

A.> /= +=

B.>= %= +=

C.> %= +=

D.> /= =+

【答案】:A

【解析】

观察输出序列:1到11递增,到11后回到5,再递增到11,如此循环。这说明num到11后执行了除以2的操作(11/2=5),其余时候每次加1。因此第一个空填>(大于10时触发除法),第二个空填 /=(除以2),第三个空填 += (加1)。A选项 > /= += 完全匹配。B选项用 %= 会让num对2取余,11%2=1,不符合输出。D选项 =+ 会被解析为 = + (赋正值),num会变为1而非加1。故选A。

第10题

如下 C++ 代码可以执行,其输出是( )。

inti;for(i=1;i<5;i++)if(i%2==0){continue;cout<<i<<"#";}cout<<i<<"END#";

A.5END#

B.5#END

C.1#3#4#END

D.1#3#4 END#

【答案】:A

【解析】

循环中当 i % 2 == 0(即i为偶数)时执行 continue,跳过后面的 cout 语句直接进入下一次循环。continue 之后的 cout << i << “#” 永远不会执行。循环正常结束后 i 的值为5(i 从 1 到 4 循环,退出时 i 自增为5)。因此输出 5END#。故选A。

第11题

如下 C++ 代码执行时,下列说法正确的是( )。

intN,i;cin>>N;for(i=2;i<N;i++)if(N%i==0){cout<<"1#";break;}elsecout<<"0#";

A. 如果输入2,将输出1#

B. 如果输入15,将输出0#1#

C. 如果输入1,将输出0#

D. 如果输入3,将输出1#

【答案】:B

【解析】

代码从 i=2 开始试探 N 是否能被 i 整除,若能整除则输出 1# 并跳出,否则输出 0# 继续循环。输入 2 时,循环条件 i<N 即 2<2 为假,循环不执行,无输出,A错误。输入15时,i=2时 15%2≠0 输出 0#,i=3 时 15%3 == 0 输出 1# 并 break,最终输出 0#1#,B正确。输入1时,2<1为假,循环不执行,无输出,C错误。输入3时,i=2时3%2≠0输出 0#,循环结束(i=3不满足i<3),输出 0# 而非 1#,D错误。故选B。

第12题

有关如下 C++ 代码,下列说法中错误的是( )。

inti,tot;i=0,tot=0;while(0<=i&&i<10){tot+=1;i+=1;}cout<<tot;

A. 如果调整0 <= i && i < 101 <= i && i < 10,输出同样为45,因为加上0不影响结果。

B. 如果将i = 0tot = 0合并为i = tot = 0,执行结果与修改前相同。

C. 将tot += 1i += 1交换顺序,执行结果与修改前相同。

D. 将i = 0tot = 0交换顺序,执行结果与修改前相同。

【答案】:A

【解析】

原代码中 i 从0到9共循环10次,tot 最终为10,并非45。A选项声称输出为45且修改条件后结果不变,这个说法本身就是错误的——实际输出为10。B选项i = tot = 0从右向左赋值,i和tot都被赋为0,与原代码效果相同,B正确。C选项交换tot +=1和i +=1的顺序不影响结果,因为两者之间无依赖关系,循环仍执行10次,tot为10,C正确。D选项交换i=0和tot=0的顺序,两个独立赋值交换不影响结果,D正确。故选A。

第13题

以下 C++ 代码可以找出千位、百位、十位和个位满足特定条件的四位数(例如各位数字的四次方和等于原 数,即“四叶玫瑰数”),横线处应该填入的是( )。

intcount=0;for(intn=1000;n<=9999;n++){inta=n/1000;intb=(n/100)%10;_________________________// L1intd=n%10;if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==n){// 特定条件count++;}}

A.int c = (n / 10) / 10;

B.int c = (n / 10) % 10;

C.int c = (n % 10) / 10;

D.int c = (n % 10) % 10;

【答案】:B

【解析】

代码中a取千位(n/1000),b取百位((n/100)%10)、d取个位(n%10),缺少的是十位c的取法。取十位数字的方法是先将n除以10去掉个位,再对10取余得到十位数字,即(n/10)%10。A选项(n/10)/10得到的是n/100,会包含百位和千位,不是单个数字。C选项(n%10)/10中n%10是个位数字(0-9),再除以10结果恒为0。D选项(n%10)%10等于n%10是个位数字而非十位。故选B。

第14题

下面的 C++ 代码用于计算经过n秒后的秒针位置(0 ∼ 59 0\sim 59059),两处横线处分别应填入的代码是( )。

intstart,n,pos;cout<<"当前秒数(0-59): ";cin>>start;cout<<"经过多少秒: ";cin>>n;pos=____________;// L1if(____________)// L2cout<<n<<"秒后回到12点方向"<<endl;elsecout<<n<<"秒后指向"<<pos<<"秒刻度"<<endl;

A.(start + n) / 60pos == 0

B.(start + n) % 60pos == 0

C.(start + n) / 60pos <= 0

D.(start + n) % 60 和pos = 0

【答案】:B

【解析】

秒针在0-59秒之间循环,经过n秒后的位置应该用取模运算(start +n) % 60来计算,排除A和C。当秒针回到12点方向时pos为0,判断条件应为pos == 0(相等比较)。D选项中pos = 0是赋值语句而非比较,会在条件中把 pos 赋为0且条件恒为真,逻辑错误。故选B。

第15题

如果正整数 N 只能被 1 和它本身整除,则它是一个质数(或素数)。下面的 C++ 代码用于判断正整数 N 是否为质数(素数)。若 N 是质数,输出 YES ,否则输出 NO 。横线处不应填入的代码是( )。

intN,i;cin>>N;if(N<=1){cout<<"NO";return0;}for(i=2;______;i++){if(N%i==0){cout<<"NO";return0;}}cout<<"YES";

A.i < N

B.i <= N

C.i <= N / 2

D.i * i <= N

【答案】:B

【解析】

判断质数需要在2到N-1范围内试探是否有因子。A选项i<N是标准写法,正确。C选项 i<=N/2也是可行的,因为N的最小因子不超过N/2(除了N本身),正确。D选项 i * i <= N 利用了因子成对出现的性质,只需试到 √N 即可,是优化写法,正确。B选项 i <= N 会让循环执行到 i=N,此时N %N == 0必然成立,导致所有正整数都被判为非质数(包括真正的质数),因此B是不应填入的代码。故选B。

判断题

第1题

又到期末考试周,小明发现这次许多闭卷考试不仅禁止携带手机、平板电脑,还有最近比较时髦的各类 AI 眼镜(也有叫智能眼镜)也同样不允许带入考场。这些 AI 眼镜应该也是内置了操作系统并可能支持 Wi-Fi 或蓝牙连接。

A. 正确

B. 错误

【答案】:A

【解析】

AI眼镜(智能眼镜)是一种可穿戴计算设备,内部集成了处理器、存储器等硬件组件,运行嵌入式操作系统,并通常支持Wi-Fi或蓝牙等无线连接方式,可以独立进行计算和通信。因此将其视为带有操作系统和网络连接能力的设备是正确的,考场禁止携带也正是因为其具备信息获取和通信能力。

第2题

如果n为大于 的整数,则 C++ 表达式(n / 10) % 10(n % 100) / 10的结果相同。

A. 正确

B. 错误

【答案】:A

【解析】

两个表达式都是取十位数字。(n/10)%10先去掉个位再取余得到十位。(n%100)/10先取后两位(十位和个位),再除以10去掉个位得到十位。对于任意正整数n,两种写法的结果都是n的十位数字,结果相同。

第3题

下面 C++ 代码执行后将输出19

inti;for(i=0;i<20;i+=3)if(i%3!=0)break;cout<<i;

A. 正确

B. 错误

【答案】:B

【解析】

i 从0开始,每次加3,因此的 i 值依次为0、3、6、9、12、15、18。每次循环中i%3的结果都是0,条件 i%3!=0 恒为假,break 永远不会执行。循环正常结束时i=21(i=18时满足条件,加3后i=21不满足i<20退出),输出21而非19。

第4题

在数学中,N ! N!N!称之为N NN的阶乘,其含义是1 11N NN之积,包括N NN。如3 ! = 1 × 2 × 3 = 6 3!=1\times 2\times 3 = 63!=1×2×3=6。如下 C++ 代码能输出N ! N!N!的结果。

intN;cout<<"请输入正整数:";cin>>N;intrst=0;for(inti=1;i<N+1;i++)rst*=i;cout<<rst;

A. 正确

B. 错误

【答案】:B

【解析】

阶乘是从1乘到n的累乘,初始值应为1。但代码中rst 初始化为0,rst *= irst = rst * i,0乘以任何数都是0,因此无论输入什么N,输出始终为0,无法正确计算阶乘。应将int rst=0改为int rst =1才能正确计算。

第5题

如下 C++ 代码能实现输出正整数N NN的各位数字。

intN;cin>>N;while(N>0){cout<<(N%10)<<endl;N=N/10;}

A. 正确

B. 错误

【答案】:A

【解析】

代码通过N%10取个位数字,N/10去掉个位,循环执行可以逐位输出N的各个数字。虽然输出顺序是从低位到高位(先个位、再十位、再百位……),但题目表述为"输出正整数N的各位数字",并未限定必须按从高位到低位的顺序。因此该代码能够实现逐位输出N的各位数字,判断正确。若题目要求按原数顺序输出,则需要先将各位数字保存下来再逆序输出。

第6题

将如下 C++ 代码中的printf("\n")更换为printf("%c", '\n'),输出效果相同。

for(inti=0;i<100;i++){if(i%5==0)printf("\n");printf("%2d ",i);}

A. 正确

B. 错误

【答案】:A

【解析】

printf(“\n”)直接输出换行符字符串。printf(“%c”, ‘\n’)通过格式符%c 输出字符’\n’(换行符)。两者都是向输出流写入一个换行字符,效果完全相同。'\n’是转义字符表示换行,与字符串“\n"中包含的换行符一致。

第7题

C++ 代码cout << (2.5 % 2)能够生成可执行代码,但执行时将报错,因为%只能适用于正整数。

A. 正确

B. 错误

【答案】:B

【解析】

取模运算符%的操作数必须是整型,2.5是浮点数(double 类型)因此2.5%2在编译阶段就会报错(“invalid operands of types ‘double’ and ‘int’ to binary 'operator%”),无法生成可执行代码。题目说"能够生成可执行代码"是错误的,实际上编译就不会通过。此外%适用于所有整型(包括负整数),并非只能用于正整数。

第8题

下面的 C++ 代码执行后将输出24

inttotal;for(intn=1;n<=4;n++){total*=n;}cout<<total;

A. 正确

B. 错误

【答案】:B

【解析】

代码中 total 声明后未初始化,其值是未定义的(在C++中局部变量未初始化时为随机值)。total *= n在未初始化的随机值基础上累乘,结果不可预测。即使假设 total 恰好为1,4的阶乘确实是24,但由于未初始化,结果并非确定的24。因此"将输出24"的说法不正确。

第9题

如果a是 C++ 的整型变量,值为4,则表达式(a % 2 == 0) + (a / 2)的值为4

A. 正确

B. 错误

【答案】:B

【解析】

a 为4时,a% 2 == 0 即 4%2 == 0 为 true,在C++中 true 转换为整型值为1。a/2 即 4/2 为2。因此 (a % 2 == 0)+ (a / 2) = 1 + 2 = 3。编译验证结果为3,而非4。题目说值为4是错误的。

第10题

删除下面 C++ 代码中的continue后,其输出与原来相同。

intx=0;while(x<4){x++;if(x==2)continue;cout<<x<<",";}

A. 正确

B. 错误

【答案】:B

【解析】

原始代码中,当 x == 2 时执行 continue 跳过 cout 语句,不输出2,输出为1,3,4。删除 continue 后,if (x == 2) 的条件判断为空语句(或条件成立后继续执行cout),x为2时也会输出,输出变为1,2,3,4。两者输出不同,因此判断为错误。

编程题

题解:洛谷 B4551 去旅行

题解:洛谷 B4552 交税

http://www.jsqmd.com/news/1141646/

相关文章:

  • 工业互联网组建与维护全流程实战指南(零基础落地+运维避坑)
  • Claude Code增强指南:Userscript前端增强与API后端集成
  • Claude Code 支持哪些开发语言?Java、Python、Vue 实测
  • STM32G070RB与MAX9744的嵌入式音频系统设计
  • ICM-42605与STM32F415ZG实现低成本高精度运动追踪方案
  • 酷狗音乐API权限验证失效:双版本架构深度解析与实战配置
  • 2026爆款技术:AI多智能体系统(Multi-Agent)从0到1完整实战指南
  • 2026年AI聚合API平台横向评测:多模型时代下的企业与个人选型指南
  • KL散度的学习
  • PotatoNV终极指南:免费解锁华为麒麟设备Bootloader的完整教程
  • 机械设备售后管理系统哪家好?2026行业选型深度解析
  • Windows 10/11终极指南:如何修复PL2303驱动不兼容问题
  • Stable Diffusion本地部署:AI绘画整合包完整指南
  • 3大核心功能+7日学习路线:用SMUDebugTool精准掌控AMD Ryzen处理器性能
  • TB9051FTG与PIC18LF46K40实现静音电机控制方案
  • LED矩阵控制系统设计与IS31FL3731驱动芯片应用
  • 终极WeMod增强指南:免费解锁专业版功能的完整解决方案
  • 魔兽争霸3完整优化指南:如何使用WarcraftHelper解决所有兼容性问题
  • 如何用一款开源小说下载器永久保存100+网站的数字记忆?
  • Si4732与STM32L021K4打造专业收音机方案
  • IT疑难杂症诊疗室:从问题定位到根治解决的技术实践
  • 基于AD74115H与STM32的多传感器控制系统设计
  • 13DOF传感器与PIC24EP微控制器的嵌入式空间感知方案
  • 基于TPA3128D2与STM32的高效D类音频放大系统设计
  • 4-20mA电流环原理与STM32高精度采集方案
  • 武汉云克隆大鼠睾丸间质细胞:核心特性与原代细胞应用优势
  • 从零打造你的智能机器狗:开源四足机器人终极指南
  • 锂离子电池过压保护与BQ2920芯片应用详解
  • Biotin-PEG-Folic Acid,可特异性识别并结合细胞表面高表达的叶酸受体
  • LARA-R6401与PIC18F4550物联网硬件协同设计指南