版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年3月GESP编程能力等级认证C++二级真题(含答案和解析)一、单选题(每题2分,共30分)。1.题2026年春节联欢晚会上一个武术表演节目《武BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备()。A.检测重心的重力传感器B.预装的AI算法程序C.接收动作指令的遥控器D.拍摄其他机器人的摄像头答案:B。解析:输入设备是用于向计算机系统输入数据和指令的硬件设备。A选项重力传感器用于检测重心,是输入设备;C选项遥控器用于接收外部指令,是输入设备;D选项摄像头用于获取图像信息,是输入设备。B选项预装的AI算法程序是软件,不是硬件设备,因此不能作为输入设备。2.下面代码用来找出输入的N个正整数中最大的一个。如果将代码段用流程图来表示,则L1标记的代码行应该使用的图形是()。intN,max=0,val;cin>>N;while(N){cin>>val;if(val>max)//L1max=val;N--;}cout<<max;A.圆形框B.椭圆形框C.平行四边形框D.菱形框答案:D。解析:流程图中,L1标记的代码行是条件判断语句if(val>max)。条件判断在流程图中使用菱形框表示。圆形框和椭圆形框通常用于表示开始和结束,平行四边形框用于表示输入输出操作。3.下面C++代码可以执行,有关说法正确的是()。doublePI=3.1415926;cout<<(PI);A.为了方便初学者,cout<<(PI)和cout<<(pi)效果相同,即变量的大小写不敏感。B.cout<<(PI)修改为cout<<(Pi)能正常执行C.不能用PI做变量名,因为要保存圆周率这个常量。D.将程序中全部PI都改写为Pai,将能正常执行,不会报错。答案:D。解析:C++是区分大小写的编程语言。A错误,PI和pi是不同的标识符。B错误,Pi与PI不同,会导致编译错误(未声明的标识符)。C错误,PI可以作为变量名,只是习惯上常量用大写。D正确,只要将所有的PI统一改为Pai,程序就能正常执行。4.下面选择项中,与C++表达式!(x>5&&y<=10)等价的是()。A.x<=5&&y>10B.x>5||y<=10C.x<=5||y>10D.!x>5&&!y<=10答案:C。解析:根据德摩根定律:①!(A&&B)=!A||!B②!(A||B)=!A&&!B。因此!(x>5&&y<=10)等价于!(x>5)||!(y<=10),即x<=5||y>10。5.某同学执行C++代码cout<<((0.1+0.2)==0.3)时输出0,下面最可能的原因是()。A.C++的+运算符在处理小数时存在bugB.0.1、0.2和0.3在计算机中无法用二进制浮点数精确表示,导致0.1+0.2的结果与0.3存在微小误差。C.==运算符不能用于比较浮点数,只能用于整数。D.因为0.1+0.2的数学结果不等于0.3答案:B。解析:计算机使用二进制表示浮点数时,0.1、0.2、0.3等十进制小数在二进制被表示为无限循环小数,无法精确表示。因此0.1+0.2的结果与0.3存在微小的精度误差,导致相等比较返回false(输出0)。6.下面的C++代码段执行后其输出是()。tnt=0;for(inti=0;i<5;i++){for(intj=0;j<i;j++)tnt+=1;cout<<tnt<<"#";}cout<<tnt;A.0#1#3#6#10#10B.1#2#3#4#5#6#7#8#9#10#10C.10#10D.10答案:A。解析:外层循环i从0到4,内层循环j从0到i-1。每次循环tnt在上次的基础上递增。-i=0时,内层循环0次,tnt=0,输出0#。-i=1时,内层循环1次,tnt=0+1=1,输出1#。-i=2时,内层循环2次,tnt=1+2=3,输出3#。-i=3时,内层循环3次,tnt=3+3=6,输出6#。-i=4时,内层循环4次,tnt=6+4=10,输出10#。最后输出tnt=10。所以结果是0#1#3#6#10#10。7.下面的C++代码执行之后的输出是()。for(inti=-2;i<2;i++)if(noti%3)cout<<i<<"#";A.0#B.-2#-1#1#C.-1#0#D.-2#0#1#答案:A。解析:注意运算符优先级:%的优先级高于not(!)。所以noti%3等价于!(i%3),即判断i能否被3整除。-i=-2:-2%3=-2,非0,!(-2)=false,不输出。-i=-1:-1%3=-1,非0,!(-1)=false,不输出。-i=0:0%3=0,!(0)=true,输出0#。-i=1:1%3=1,非0,!(1)=false,不输出。所以只有0#。8.下面的C++代码执行后其输出是()。intcnt=0,i,j;for(i=1;i<5;i++){for(j=0;j<i;j++)cout<<j<<"#";break;}if(i>=5)cout<<(i*j);A.0#0#1#0#1#2#0#1#2#3#12B.0#0#1#0#1#2#0#1#2#3#C.0#D.1#答案:C。解析:外层循环i从1开始,进入循环后,内层循环j从0到0(因为i=1),输出0#,然后执行break语句,跳出外层循环。此时i=1,不满足i>=5的条件,所以if语句不执行。最终输出为0#。9.下面C++代码执行后其输出是()。intcount=0;for(inti=1;i<4;i++)for(intj=1;j<5;j++){if(j==3)continue;if(i==2)break;count+=1;}cout<<(count);A.2B.4C.6D.8答案:C。解析:外层循环i从1到3,内层循环j从1到4。-i=1时,j=1,2,4时count++(j=3时continue跳过),count=3。-i=2时,遇到break直接跳出内层循环,count不变。-i=3时,j=1,2,4时count++,count=6最终count=6。10.下面4个选项中,与下面C++代码段具有相同效果的是()。i=0;while(i<5){cout<<i;i+=1;}A.for(i=0;i<5;i++)cout<<i;B.for(i=1;i<5;i++)cout<<i;C.for(i=0;i<6;i++)cout<<i;D.for(i=1;i<6;i++)cout<<i;答案:A。解析:原代码输出0,1,2,3,4。A选项for循环从0到4,输出0,1,2,3,4,与原代码相同。B选项输出1,2,3,4。C选项输出0,1,2,3,4,5。D选项输出1,2,3,4,5。11.下面C++代码执行后输出是()。intn=10;while(n>0){n-=1;if(n%3==0)continue;if(n==5)break;}cout<<n;A.0B.5C.6D.7答案:B。解析:循环执行过程。-n=10,减1得9,9%3==0,continue。-n=9,减1得8,8%3!=0,8!=5。-n=8,减1得7,7%3!=0,7!=5。-n=7,减1得6,6%3==0,continue。-n=6,减1得5,5%3!=0,5==5,break。最终输出n=5。12.下面C++代码段执行后,其输出是()。inti,j,cnt;cnt=0;for(i=0;i<5;i++){i=-i;for(j=i;j<-i;j++)cnt+=1;i=-i;}cout<<cnt;A.5B.15C.20D.30答案:C。解析:i=-i出现了2次,第1次使得内层循环从负数开始遍历,第2次是把i还原,不破坏外层的循环次数。每次外层循环:-i=0时,i=-i=0,内层循环j从0到0,不执行,i=-i=0。-i=1时,i=-i=-1,内层循环j从-1到1,执行2次(-1,0),cnt=2,i=-i=1。-i=2,然后i=-i=-2,内层循环j从-2到2,执行4次,cnt=4,i=-i=2。实际上每次循环内层执行2*i次,i取值0,1,2,3,4(虽然会被修改,但后面进行了还原),总次数为0+2+4+6+8=20。13.某学校图书馆的借阅卡号由6位整数组成。前5位是顺序编号,第6位是校验码,用于防止输错。校验码规则如下:将前5位数字相加,然后除以10的余数,就是第6位数字。如卡号123455的前5位之和为15,除以10的余数是5,故第6位为5。下面的C++代码段用于判断卡号是否正确,横线处应填入的代码是()。cout<<"请输入卡号:";cin>>N;order_num=N/10;//获得前5位顺序号,假设录入一定为6位正整数。check_num=N%10;//获得最后一位。tnt=0;//保存前5位之和。for(i=0;i<5;i++){________________;order_num/=10;}if(__________________)cout<<"符合校验规则";elsecout<<"不符合校验规则";A.tnt+=order_num/10tnt/10==check_numB.tnt+=order_num%10tnt%10==check_numC.tnt=order_num/10+tnttnt%10==check_numD.tnt=order_num%10tnt/10==check_num答案:B。解析:需要提取前5位数字的每一位并求和。使用order_num%10可以取出最后一位数字,加到tnt中,然后order_num/=10去掉最后一位。校验时,前5位之和tnt除以10的余数应该等于check_num,即tnt%10==check_num。14.下面的C++代码段正常执行后其输出的数字图形是()。for(i=1;i<5;i++){for(j=1;j<i+1;j++)cout<<j;cout<<endl;}A.B.C.D.答案:A。解析:外层循环i从1到4,内层循环j从1到i,输出j的值。-i=1时,输出1。-i=2时,输出12。-i=3时,输出123。-i=4时,输出1234所以选A。15.某学校举办“校园演讲比赛”,每位选手由8位评委打分(分数为0~10的整数),且每位评委必须打分。计分规则:若至少有5位评委给出大于等于6分,则成绩有效,最终得分为所有8位评委的总分;如给出低于6分的评委数量超过5位,则记为0分。以下核心程序段依次输入8个分数,并计算最终得分。横线处应填入()。total_score=0;//所有分数之和。high_count=0;//≥6分的评委数量。for(i=0;i<8;i++){cout<<"请输入评委分数:";cin>>score;____________________;if(score>=6)________________;}if(high_count>=5)cout<<total_score;elsecout<<0;A.total_score+=scorehigh_count+=1B.total_score+=scorehigh_count+=scoreC.high_count+=1total_score+=scoreD.total_score*=scorehigh_count*=1答案:A。解析:第一处横线需要累加所有分数,所以是total_score+=score;第二处横线在score>=6时执行,需要统计高分评委数量,所以是high_count+=1。二、判断题(每题2分,共20分)。16.小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。()。答案:正确。解析:电话手表能够实现打电话、收发信息等功能,必须有操作系统来管理硬件资源和提供软件运行环境。现代智能手表通常运行在如WearOS、watchOS等操作系统上。17.题C++语句cout<<('4'%'2'=='2'*'2'%2);执行后的输出是1。()。答案:错误。解析:字符在运算时自动转换为其ASCII码值。'4'=52,'2'=50。'4'%'2'=52%50=2;'2'*'2'%2=50*50%2=2500%2=0。2==0为false,输出0。18.下面的C++代码段执行时将报错,因为10是整数类型,a是布尔类型。由于类型不同,不能进行加法运算。()。boola=true;cout<<(10+a);答案:错误。解析:在C++中,布尔类型可以自动转换为整数类型,true转换为1,false转换为0。因此10+a等于11,不会报错,输出11。19.下面C++代码段执行后将输出0-3-6-9-。()。for(inti=0;i<10;i++){if(i%3)continue;cout<<i<<"-";}答案:正确。解析:当i%3等于0时(即i能被3整除),不执行continue,输出i和-。i从0到9,能被3整除的有0,3,6,9,所以输出0-3-6-9-,判断正确。20.执行下面的C++代码段,如果N是基本数据类型,则语句cout<<(N);将被执行0次或无数次(即死循环)。()。cin>>N;while(N)cout<<(N);答案:正确。解析:如果N输入为0,while条件为假,循环体执行0次;如果N输入非0,while条件永远为真(N的值不会改变),形成死循环,执行无数次。21.下面的C++代码段可正常执行,删除continue不影响执行效果。()。for(i=0;i<10;i++){i+=1;continue;}cout<<(i);答案:正确。解析:continue语句用于跳过循环体剩余部分,进入下一次循环。在此代码中,continue之后没有其他语句,所以删除continue不影响执行效果。22.下面的C++代码段用于计算1到N之间且包含N的所有数字中含有的3的个数,如1到40含有14个3,而1到20则只含有2个3。如果将while(i!=0)改为while(abs(i)),则执行结果相同。()。cout<<"请输入正整数N:";cin>>N;cnt=0;//保存3的个数。for(k=1;k<N+1;k++){i=k;while(i!=0){if(i%10==3)cnt+=1;i/=10;}}cout<<cnt;答案:正确。解析:在处理正整数时,i!=0和abs(i)!=0是等价的,因为正整数的绝对值等于其本身。当i=0时,两个条件都为假,循环结束。23.下面的C++代码段执行将不会有输出,因为内层循环j总是0开始,i*j%10==0将会被满足,执行break,故而i小于10,不会满足if判断条件。()。for(i=1;i<10;i++)for(j=0;j<i;j++)if(i*j%10==0)break;if(i>=10)cout<<(i*j);答案:错误。解析:break只能跳出当前所在的内层循环,不能跳出外层循环。当内层循环执行break后,外层循环继续执行i++。最终i会达到10,满足if条件,会输出结果为0。24.下列C++代码执行后将输出1#4#9#16#16。()。cnt=0;for(i=1;i<5;i++){for(j=1;j<i+1;j++)if(i*j%10==0)break;if(j>=i+1)cout<<(i*j)<<"#";}if(i>=5)cout<<(i*j);答案:错误。解析:外层循环i依次为1~4,内层循环j依次为1~i。-i=1时,j=1,不会break,内层循环结束时j=i+1=2,此时2>=1+1成立,输出i*j#即2#。-i=2时,j=1,2,不会break,内层循环结束时j=i+1=3,此时3>=2+1成立,输出i*j#即6#。-i=3时,j=1,2,3,不会break,内层循环结束时j=i+1=4,此时4>=3+1成立,输出i*j#即12#。-i=4时,j=1,2,3,4,不会break,内层循环结束时j=i+1=5,此时5>=4+1成立,输出i*j#即20#。当外层循环结束时,i=5,第9行if成立,最后输出i*j=5*5=25。因此正确输出为2#6#12#20#25,说法错误。25.下面C++代码执行后输出如左图所示,将"%d"修改为"%3d"即可实现右图输出。()。for(i=1;i<10;i++){for(j=1;j<10;j++)printf("%d",i*j);printf("\n");}答案:正确。解析:%3d表示以3位宽度输出整数,不足3位时左补空格。这样可以使每个数字占3个字符宽度,实现右对齐的整齐输出效果。三、编程题(每题25分,共50分)。26.试题名称:数数。时间限制:1.0s。内存限制:512.0MB。题目描述:对于正整数n,如果n的所有数位中包含恰好3个2,Alice会认为这个正整数是美丽的。例如,正整数24122中包含3个2,所以24122是美丽的;正整数132中包含1个2,所以132不是美丽的;正整数212322中包含4个2,所以212322不是美丽的。Alice想知道正整数L到正整数R(包括L和R)中有多少美丽的正整数,你能帮她数一数吗?输入格式:输入共2行,第一行为正整数L,第二行为正整数R。输出格式:输出一行,包含一个整数G,表示L到R中,美丽数的数量。输入样例。输出样例。样例解释:2221到2223中,2221与2223是美丽的,2222不是美丽的。数据范围:保证1≤L≤R≤106。参考程序。#include<iostream>usingnamespacestd;intmain(){intl,r,ans=0;cin>>l>>r;for(inti=l;i<=r;i++){intc=0,t=i;while(t){if(t%10==2)c++;t/=10;}if(c==3)ans++;}cout<<ans;return0;}解析:程序通过外层for循环遍历区间[L,R]内的所有整数。对于每个整数i,使用内层while循环逐位检查,这里需要注意把i的值备份出来进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年四川省泸州市泸县选调机关事业单位工作人员考试(综合素质测试)测试题及答案
- 数据备份办公室工作指南手册
- 有关2026年新品推广活动的说明(4篇)
- 本科工业设计专业:办公空间动态人体测量学教案
- 2026年静脉治疗护理考试备考冲刺模拟试卷含答案解析
- 2026年教师在编考试试题及答案
- 2026年湖北省中小学教师高级职称专业水平能力测试模拟题含参考答案
- 2026年湖北荆州选调教师资格证综合素质含答案试题及答案
- 2026年民族团结月活动方案设计
- 2026年幼儿园游戏指导与策略研究
- 人口结构变化对中小学师资配置影响及调整机制研究
- 肝恶性肿瘤病人的护理查房
- 2025年天津市中考数学真题 (原卷版)
- 2025年广东省中考地理试题卷(标准含答案)
- 山东2023年夏季高中历史学业水平合格考试卷真题(精校打印)
- CJ/T 43-2005水处理用滤料
- T/ZHCA 021-2022化妆品紧致功效测试体外人源成纤维细胞活性测试方法
- 方言文化生态与多样性维护-洞察阐释
- 2025光伏电站防雷装置检测技术规范
- 智慧农贸市场改造设计完整方案
- 2023-2024学年上海市长宁区延安中学高二(下)期中数学试卷 (含解析)
评论
0/150
提交评论