版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年3月GESP编程能力等级认证C++一级真题(含答案和解析-在末尾)一、单选题(每题2分,共30分)。1.题2026年春节联欢晚会上一个武术表演节目《武BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备()。A.检测重心的重力传感器B.预装的AI算法程序C.接收动作指令的遥控器D.拍摄其他机器人的摄像头2.小明学习编程有一段时间了,他想在图形环境下把当前目录(或文件夹)下的文本文件20260314.txt的名字改一下。他用鼠标左键点击选中该文件后,立即完成下面哪个操作后将处于输入新文件名的状态()。A.单击右键并选择弹出菜单中的“重命名”。B.双击左键C.按功能键F1D.按回车键3.下面C++代码可以执行,有关说法正确的是()。doublePI=3.1415926;cout<<(PI);A.为了方便初学者,cout<<(PI)和cout<<(pi)效果相同,即变量的大小写不敏感。B.cout<<(PI)修改为cout<<(Pi)能正常执行C.不能用PI做变量名,因为要保存圆周率这个常量。D.将程序中全部PI都改写为Pai,将能正常执行,不会报错。4.题C++表达式3*3%2的值为()。A.81B.27C.4D.15.整型变量a、b的初值都是4,则下面的C++代码执行后的输出是()。a,b=3,4;cout<<(a+2)<<(b-2)<<endl;cout<<a<<b<<endl;A.6143B.5234C.6244D.62326.下面C++代码的相关说法,正确的是()。intN=0;cin>>N;cout<<(N);A.执行时如输入10,则将输出10。B.执行时如输入3.14,将报错。C.执行时如输入ABC,将报错。D.执行时如输入-10,将报错。7.下面C++代码执行时,其说法正确的是()。intM=0,N=0;cin>>M;cin>>N;if(N>M)cout<<(N-M);elsecout<<(M-N);A.如果输入一个正数和一个负数,其输出结果肯定是大于0。B.不管是负整数、正整数亦或0,其结果肯定是大于等于0。C.如果N和M是相等的整数,将不会有输出。D.如果N和M输入带有小数点的数,将按整数部分计算。8.下面C++代码执行后的输出是()。inti,tnt=1;for(i=0;i<5;i++)tnt*=i;printf("%2d%2d\n",tnt,i);A.245B.105C.04D.059.执行下面C++代码段求序列-1+2+3-4+5+6-7+8+9-10+11+12…之值。例如输入4,则计算序列前4项的值,规律如序列所示,输出为0。下面说法中正确的是()。intN,tnt,i;cout<<"请输入正整数:";cin>>N;tnt=0;for(i=1;i<N+1;i++)//L1if(i%3==1)//L2tnt+=-i;elsetnt+=i;cout<<tnt;A.L1行中i<N+1应该修为i<N才会符合预期B.L2行中i%3==1应修改为i%3==0才会符合预期C.L2行中i%3==1修改为i%3与当前程序效果相同D.当前代码能实现题目所描述计算目标10.下面C++代码的相关说法,正确的是()。inti;for(i=1;i<10;i++){if(i%2==0){continue;//L1}elsecout<<i<<"#";}cout<<i<<"END";A.上述代码执行后,其输出是1#3#5#7#9#9END。B.删除else后的执行效果与当前代码相同C.删除else且将cout<<i<<"#"移入L1行下面,则执行效果与当前代码相同。D.在cout<<i<<"END"前增加判断if(i>10),其执行效果与当前代码相同。11.一个正整数的每位都是个位数,称为数位,最高位非0。下面的C++代码用于求正整数的所有数位之和,简称数位和。如123的各数位分别是1、2、3,则其数位和为1+2+3,结果为6。为实现该目标,横线处应该填写的代码是()。intN;cin>>N;inttnt=0;while(N!=0){____________;____________;}cout<<"N的数位和为:"<<tnt;A.tnt+=N/10N/=10B.tnt+=N%10N/=10C.tnt+=N/10N%=10D.tnt=tnt+N%10N%=1012.小明想要快速知道任给一个正整数中有多少个奇数位(数位值是奇数),下面的C++代码是其实现,横线处应该填入的代码是()。intN;cin>>N;intodd_count=0;//记录奇数的个数。intold_number=N;//保存原数。while(N!=0){if(_________________)odd_count+=1;N=(N-N%10)/10;}cout<<old_number<<"中共有"<<odd_count<<"个奇数";A.N%10%2==0B.N%10%2==1C.N/10/2==1D.N/2/10==013.小明和弟弟在玩一个拼数字游戏,游戏规则是:二人各写一个两位正整数M和N;然后将较大的数字放在较小的前面,拼成一个4位数;将这个4位数除以3的余数添加到4位数的后面,得到一个5位数;最后判断这个5位数能否被14整除。下面的C++代码用于判断M和N是否符合全部要求,如果符合则输出Y否则输出N。例如输入85和79,可以拼出85792,恰好是14的倍数,则输出Y。关于下面代码描述正确的是()。intM,N,Q;cin>>M>>N;if(M>N)//L1Q=M*100+N;elseQ=N*100+M;if((Q*10+Q%3)%14==0)//L2cout<<"Y";elsecout<<"N";A.代码段不能完成正确判断B.L1行代码中条件应该改为M<=NC.L2行代码应该改为if((Q*10+Q/3)%14==0)D.代码段可以不使用变量Q,而是在区分M和N大小后分别直接用它们来判断。14.执行下面C++代码可以判断一个6位正整数N的高3位和低3位的差是否是314的倍数。例如628314就符合要求。横线处应该填入()。cin>>N;if(___________________________)cout<<N<<"符合条件"<<endl;A.((N%1000)-(N/1000))/314==0B.((N/1000)-(N%1000))%314==0C.((N%1000)-(N/1000))/314D.((N/1000)-(N%1000))%31415.题N是一个正整数。如果N的所有奇数位的数位和等于所有偶数位的数位和,则称它是一个“双螺旋数”。例如12375的所有奇数位的数位和是9,同时它的所有偶数位的数位和也是9,则12375就是一个双螺旋数。下面的C++代码用于判断输入的N是否为双螺旋数。空白处应该填入的代码是()。inti,N,N1=0,N2=0,N0;cin>>N;N0=N;while(N){__________________________________________________}if(N1==N2)cout<<N0<<"是双螺旋数"<<endl;A.N1+=N%10,N/=10;N2+=N%10,N/=10;B.N1+=N/10,N/=10;N2+=N/10,N/=10;C.N1+=N%10,N%=10;N2+=N%10,N%=10;D.N1+=N/10,N%=10;N2+=N/10,N%=10;二、判断题(每题2分,共20分)。16.小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。()。A.正确B.错误17.题C++表达式4%2和2*2%2的结果相同。()。A.正确B.错误18.下面C++代码段成功执行后将输出0。()。for(i=1;i<10;i++)if(i%3==0)break;cout<<i;A.正确B.错误19.下面能够正常执行的C++代码段用于求1到N之和,N为正整数。因为i<N+1,所以是1到N且包含N之和。()。tnt=0;cout<<"请输入正整数:";cin>>N;total=0;for(i=1;i<N+1;i++);total+=i;cout<<total;A.正确B.错误20.执行下面的C++代码段,其语句cout<<(N)将被执行0次或无数次(即死循环)。()。cin>>N;while(N)cout<<(N);A.正确B.错误21.下面的C++代码段的变量都是整型,它能用于判断输入的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值相同。例如,121和414都是对称数,而123不是对称数。()。cout<<"请输入正整数:";cin>>n;old_number=n;new_number=0;while(n!=0){new_number=new_number*10+n%10;n/=10;}if(old_number==new_number)cout<<"对称数";elsecout<<"非对称数";A.正确B.错误22.执行下面的C++代码段,如果变量都为整型变量,输入为大于0的整数,则输出数值一定为-N的值。()。cin>>N;total=0;for(i=-N;i<N;i+=2)total+=i;cout<<total;A.正确B.错误23.执行C++语句printf("%d\n",3.14)将报错。()。A.正确B.错误24.执行下面的C++代码后将输出2500。()。intcnt=0;for(inti=1;i<100;i++)cnt+=i++;cout<<cnt;A.正确B.错误25.小明在测试C++的printf的功能时执行了printf("%-5d\n",314),则代码输出的结果是-5314。()。A.正确B.错误三、编程题(每题25分,共50分)。26.试题名称:交朋友。时间限制:1.0s。内存限制:512.0MB。题目描述:Alice班上共有4个小朋友,身高分别为H1,H2,H3,H4,其中Alice的身高为H1。Alice想要和身高最接近她的人交朋友,如果有多个人符合条件,则Alice想和其中较矮的那一人做朋友,你能告诉她这个人的身高是多少吗?输入格式:输入共4行,第i行包含一个整数,表示班上小朋友的身高。输出格式:输出1行,包含一个整数h,表示Alice想交的朋友的身高。输入样例。输出样例。样例解释:样例1中,Alice身高为150,第2、3个小朋友与Alice身高差距为15,同样最接近,Alice选较矮的一个即第3个身高为135的小朋友交朋友。数据范围:保证100≤Hi≤199且Hi互不相同。27.试题名称:数字替换。时间限制:1.0s。内存限制:512.0MB。题目描述:Alice不喜欢数字4,但觉得数字8寓意好,她想把数中的4全都替换成8,若数中不含4则无需修改,你能帮帮她吗?输入格式:输入一行,包含一个整数A,表示替换前的数。输出格式:输出一行,包含一个整数B,表示替换后的数。样例解释。对于样例1,输入8459045中有两个4,都将其替换为了8,得到8859085。对于样例2,输入123中不包含4,无需修改输入数字,输出123。数据范围:0≤A≤108。答案解析如下。1.答案:B。解析:考点为计算机输入设备的定义。输入设备是向计算机输入信息的硬件,重力传感器、遥控器、摄像头都是硬件输入设备,AI算法程序属于软件,不是输入设备。所以答案是B。2.答案:A。解析:考点为文件重命名操作。选中文件后右键选择“重命名”可直接进入改名状态,双击是打开文件,F1是帮助,回车无重命名作用。所以答案是A。3.答案:D。解析:考点为C++变量命名与大小写敏感。C++变量严格区分大小写,PI可以作为变量名,全部统一改为Pai程序仍可正常运行。所以答案是D。4.答案:D。解析:考点为算术运算符优先级与结合性。*与%优先级相同,从左向右计算,3*3=9,9%2=1,结果为1。所以答案是D。5.答案:A。解析:考点为逗号表达式与赋值运算。C++中a,b=3,4;是逗号表达式,而非并行赋值。含义是:(a),(b=3),4;执行顺序如下。(1)计算a(无副作用,a仍为4)。(2)执行b=3,b变为3。(3)整个表达式的值为4(未使用)。因此执行后:a=4,b=3。第一行输出:(a+2)=6,(b-2)=1→61。第二行输出:a=4,b=3→43。最终输出为61和43,选A。6.答案:A。解析:考点为cin整型输入规则。输入整数10可正常读取输出,输入小数、字母不会直接报错,负数可以正常读取。变量N为int类型,分析选项如下。A正确:输入10符合整数格式,正常读入并输出10。B错误:输入3.14时,cin>>N只读取整数部分3,不会报错。C错误:输入ABC时,cin读取失败,N保持原值0,程序不报错。D错误:输入-10是合法整数,正常读入并输出-10。因此只有A正确。7.答案:B。解析:考点为cin输入、if-else分支与绝对值差。A、D在输入小数时,结论错误。代码输出两数绝对值之差,无论正负或0,结果一定大于等于0。所以答案是B。8.答案:D。解析:考点为for循环与累乘。循环i从0到4,tnt第一次乘0后始终为0,所以最终输出tnt的值也是0,循环结束i=5。格式化输出中:%2d表示输出的整数至少占2个字符宽度,不够前面补空格,故输出05。所以答案是D。9.答案:D。解析:本题考察数列规律与循环条件的对应关系。数列规律。给定数列:-1+2+3-4+5+6-7+8+9-10+11+12……规律为:每3个数一组,组内第1项为负,第2、3项为正。对应位置:1,4,7,10,…为负数,其余为正数。代码逻辑分析:for(i=1;i<=N;i++):循环变量i从1取到N,覆盖前N项,范围正确。if(i%3==1):恰好选中1,4,7,10,…,对这些项取负,其余项取正,与数列符号规则一致。选项分析:A错:若改为i<N,则循环只到N-1,少算最后一项,不符合“前N项”的要求。B错:i%3==0会选中3,6,9,…,符号规则与题目相反。C错:i%3是数值,不是逻辑判断条件,语法错误,不能替代i%3==1。D对:当前代码完全实现了题目描述的求和规则。因此,正确答案为D。10.答案:B。解析:本题考查C++循环、continue语句及代码块结构的用法。(1)原代码运行逻辑:i取值:1、2、3…9;偶数时执行continue,跳过本次循环剩余代码;奇数时执行cout<<i<<"#";输出1#3#5#7#9#;循环结束后i=10,执行最后一行cout<<i<<"END";输出10END。最终输出:1#3#5#7#9#10END。(2)逐项分析选项:A错误:因为有i++,最终输出i为10,不是9。B正确:原代码中else没有实际作用,删除else后,cout<<i<<"#";仍属于循环体,执行效果完全相同。C错误:将cout移到continue下方,偶数会执行cout,奇数反而不会,逻辑完全改变。D错误:i最大为10,if(i>10)恒为假,不会输出iEND,与原代码不同。所以正确答案是B。11.答案:B。解析:考点为数位和计算。求正整数各位数字之和,固定两步核心操作。(1)N%10:取出当前数字的个位,累加到总和。(2)N/=10:整除10去掉已处理的个位,继续处理更高位。使用while(N!=0)循环,重复执行直到数字变为0,即可完成数位累加。选项分析:A错误:N/10得到的是去掉个位后的数,不能用于取个位累加。B正确:tnt+=N%10取个位累加,N/=10为整除运算,可删除个位,逻辑完全正确。C、D错误:N%=10只保留个位,无法继续处理更高位,算法逻辑被破坏。所以正确答案是B。12.答案:B。解析:考点为数位提取与奇偶性判断。判断一个数的数位是否为奇数,核心是:N%10取出当前个位;用%2==1判断该数位是否为奇数;N=(N-N%10)/10用于去掉已处理的个位。选项分析:A错误:N%10%2==0判断的是偶数位。B正确:N%10%2==1准确判断个位是否为奇数,符合题意。C、D错误:使用N/10或N/2无法正确提取个位进行判断。所以正确答案是B。13.答案:D。解析:考点为多位数拼接与取模运算。小明和弟弟的游戏规则分4步。(1)两人各写一个两位正整数M和N。(2)将较大的数字放在较小的前面,拼成一个4位数。(3)将这个4位数除以3的余数添加到它的末尾,得到一个5位数。(4)判断这个5位数能否被14整除。代码逻辑分析:拼接四位数(L1):通过if(M>N)判断,始终将较大的两位数放在前面,较小的放在后面,拼接成四位数Q,逻辑正确。生成五位数并判断(L2):Q%3计算四位数除以3的余数,将其追加到Q末尾形成五位数Q*10+Q%3,再判断该数是否能被14整除,完全符合题目描述。选项逐一辨析:A错误:代码严格遵循题目规则,能够完成正确判断。B错误:M>N已能保证“大数在前”,改为M<=N反而可能导致小数在前,逻辑颠倒。C错误:Q/3是整数除法(商),而非余数。Q%3才是题目要求的“除以3的余数”,修改后逻辑错误。D正确:变量Q仅作为中间存储,并非必需,所以变量Q可省略,直接用M、N计算不影响结果。正确答案为D。14.答案:B。解析:考点为整数拆分、差值计算与倍数判断。对于一个6位正整数N:N/1000得到高3位;N%1000得到低3位。题目要求判断高3位与低3位的差是否为314的倍数,应使用取余运算%314==0。同时需注意:差值可能为负,但C++中负数取余仍满足倍数关系,不影响判断。选项分析:A错误:使用/314==0是判断商是否为0,逻辑错误。B正确:(高三位-低三位)%314==0正确判断是否为314的倍数。C错误:缺少%314==0判断,且使用除法逻辑不对。D错误:缺少==0,条件表达式结果不是布尔判断,无法作为if条件。所以正确答案是B。15.答案:A。解析:考点为奇偶数位和判断。“双螺旋数”要求:奇数位的数位和=偶数位的数位和。从低位到高位处理N时,交替将个位加入N1(奇位)和N2(偶位),并不断移除已处理的个位。代码逻辑推导:第一次取个位→奇数位→N1+=N%10;移除该位→N/=10。第二次取个位→偶数位→N2+=N%10;移除该位→N/=10。如此交替,直到N==0。选项分析:A正确:N%10取个位,交替累加到N1和N2,N/=10正确移除个位,逻辑完全符合。B错误:N/10取的是高位,不是当前位,无法正确累加奇偶位。C错误:N%=10会直接丢弃高位,破坏后续数位处理。D错误:同样使用N/10和N%=10,逻辑错误。所以正确答案是A。16.答案:正确。解析:考点为智能设备与操作系统。电话手表是智能设备,必须搭载操作系统才能正常运行。所以答案是√。17.答案:正确。解析:考点为取模运算。4%2=0,2*2%2先计算2*2=4,4%2=0,两个表达式结果相同。所以答案是√。18.答案:错误。解析:考点为break语句。i=3时执行break跳出循环,输出i=3,不是0。所以答案是×。19.答案:错误。解析:考点为for循环语法。for后多了分号,分号表示循环体为空,无法正确计算1~N的和。所以答案是×。20.答案:正确。解析:考点为while循环。N≠0时死循环,cout执行无数次;N=0时不执行。所以答案是√。21.答案:正确。解析:考点为回文数判断。代码将数字反转后与原数比较,可正确判断对称数。所以答案是√。22.答案:正确。解析:考点为循环对称累加。从-N到N-1步长2累加,所有正数负数两两抵消,最后只剩-N,所以结果一定等于-N。答案是√。23.答案:错误。解析:考点为printf格式输出。printf用%d输出3.14不会报错,会输出特殊的整数3。所以答案是×。24.答案:正确。解析:考点为自增与累加。cnt+=i++先累加i的当前值,再将i自增1;配合for循环中的i++,i每次循环实际增加2。因此cnt累加的是1+3+5+…+99,计算结果为2500,与题目输出一致。所以答案是√。25.答案:错误。解析:考点为printf左对齐格式。%-5d是左对齐占5位,输出314后补空格,不是-5314。所以答案是×。26.参考程序。#include<iostream>usingnamespacestd;intmain(){intH1,H2,H3,H4;cin>>H1>>H2>>H3>>H4;intans=H2;intd=H1-H2;if(d<0)d=-d;intmnd=d;d=H1-H3;if(d<0)d=-d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年浙江省龙泉市高二化学下册期末考试模拟试卷(真题汇编)附答案
- 2026年广东省兴宁市高二化学下册期末考试模拟考试卷带答案(夺分金卷)
- 2026年湖南省常宁市高二化学下册期末考试模拟测试卷(完整版)附答案
- 2026年吉林省和龙市高二化学下册期末考试模拟卷及完整答案【网校专用】
- 2026年福建省永安市高二化学下册期末考试模拟测试卷(考试直接用)附答案
- 2026年江苏省新沂市高二化学下册期末考试模拟卷(完整版)附答案
- 2026年四川省华蓥市高二化学下册期末考试模拟试卷带答案(新)
- 2026年山东省乐陵市高二化学下册期末考试模拟测试卷(考点梳理)附答案
- 2026年安徽省天长市高二化学下册期末考试模拟检测卷带答案
- 2026年安徽省明光市高二化学下册期末考试模拟测试卷及参考答案(满分必刷)
- 2026年上海市黄浦区初三下学期三模数学试卷和答案
- BQ40Z50 软件界面翻译
- 不确定度计算表-附计算公式
- 肩关节置换围手术期护理
- 湖北省普通高中学业水平合格性考试模拟政治试题(四)
- 特殊儿童发展与学习-习题及答案
- 《 岩石圈的组成及物质循环》示范课教学课件【高中地理】
- 包装危险货物技术说明书
- 商业综合体保洁服务方案
- SB/T 10426-2007餐饮企业经营规范
- GB/T 27664.3-2012无损检测超声检测设备的性能与检验第3部分:组合设备
评论
0/150
提交评论