版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年12月GESP编程能力认证C++等级考试二级真题(含答案和解析)一、单选题(每题2分,共30分)。1.近日,空中客车公司表示,约6000架空客A320系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表示,在对一起飞行事故分析后的结果显示,强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进而引发飞行异常。那这里的飞行控制系统执行判断的部件最可能是下面的()。A.辐射传感器B.处理器C.内存单元D.输出设备答案:B。解析:题目的侧重点是问“哪个部件负责执行判断逻辑”,判断这个动作本身由处理器完成。2.小明最近为了备考GESP,开始看B站上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,那他平时上学所在的教学楼内的网络是一个()。A.PANB.LANC.MAND.WAN答案:B。解析:PAN(个人区域网)覆盖范围大约在10米以内,如蓝牙、ZigBee等设备组成的网络。通常用于个人设备之间的连接,不符合“教学楼内网络”的范围。LAN(局域网)覆盖范围一般在几十米到几千米,例如一栋楼、一个校园、一个公司的内部网络。题干中“教学楼内的网络”是典型的局域网(LAN)。MAN(城域网)覆盖一个城市范围的网络,比如城市内的多个校园网互连。教学楼内网络范围远小于城域网。WAN(广域网)覆盖范围更大,可跨市、跨省甚至跨国,如互联网。显然不属于教学楼内的网络范畴。因此,教学楼内的网络属于局域网(LAN),正确答案是B。3.下面有关C++变量的说法,正确的是()。A.不可以用for作为变量名,因为for是C++的关键字(保留字)。B._tnt不可以是变量名,因为变量名的第一个字符必须是英文字母。C._tnt_不可以是变量名,因为最后一个字符容易与减号混淆。D.可以用printf作为变量名,因为printf是关键字,但这不是好习惯,因为printf有约定的功能与含义。答案:A。解析:A项,正确,for是C++关键字,不能用作变量名。B项,错误,C++变量名允许以字母或下划线开头,_tnt是合法变量名。C项,错误,_tnt_是合法的变量名(没有禁止最后一个字符是下划线)。D项,错误,printf不是C++关键字(它是标准库函数名),可以用作变量名,虽然会覆盖库函数名称,造成混淆(所以不是好习惯),但D中说“printf是关键字”是错误的。因此正确选项是A。4.一个小数是0.123123123…无限循环,其小数点后1位是1,后2位是2,依此类推,求第N位的值。横线处应填入的代码是()。intN;cin>>N;remainder=______________;if(remainder==0)cout<<1;elseif(remainder==1)cout<<2;elsecout<<3;A.N%3B.(N-1)%3C.N/3D.(N-1)/3答案:B。解析:小数位按1,2,3重复,周期为3,可以用取模运算获取循环位置排除C、D,假设求第1位即N=1时,那么remainder的值应为0,代入选项可知。A:remainder=1%3=1。B:remainder=(1-1)%3=0。因此正确选项是B。5.某同学执行C++代码时printf("%g\n",(3+3.1415926535));输出6.14159,其原因最可能是()。A.C++中整数和浮点数相加时,整数会被转换为浮点数,而某些十进制小数无法精确表示为二进制小数,从而产生某些舍入误差。B.C++的printf函数在输出浮点数时根据格式有默认小数点位数,因此输出了较少的位数。C.3.1415926535是一个无限循环小数,在计算机中无法精确表示。D.由于计算机CPU的运算错误导致。答案:B。解析:%g,根据数值大小自动选择使用科学计数法或者常规小数格式来显示,并去掉末尾的多余零,默认保留6位有效数字。题目中3+3.1415926535是double类型加法,结果是6.1415926535。用%g输出时有效数字位数不超过6位,6.1415926535总共有11位有效数字,保留6位有效数字四舍五入后为6.14159。因此正确选项是B。6.某单位工号的编码规则:编码总长5位,均为数字,前4位依次整除以3其值累加之和除以10的余数为第5位数字。如某工号为76587,前4位分别整除以3后,商分别为2、2、1、2,其累加之和为7,除以10的余数为7,故第5位为7。下面代码依次输入前4位后,两个横线处分别应填的是()。intrst=0,N;for(inti=0;i<4;i++){cin>>N;rst+=___________;//L1}cout<<___________;//L2A.N%3rst/10B.N%3rst%10C.N/3rst/10D.N/3rst%10答案:D。解析:前4位依次取商即N/3得到商并累加到rst中,第5位是累加结果rst除以10的余数,即rst%10,因此正确选项是D。7.下面的C++代码执行后的输出是()。for(inti=-2;i<2;i++)if(i%2)printf("%d#",i);A.-1#1#B.-1#0#1#C.-2#-1#1#D.-2#-1#1#2#答案:A。解析:C++中取余运算符%的结果符号与被除数的符号一致。循环从-2到1递增,-2%2=0不满足if,-1%2=-1满足if,输出-1#,0%2=0不满足if,1%2=1满足if,输出1#,所以最后输出结果为-1#1#,因此正确选项是A。8.下面的C++代码执行后其输出是()。intcnt=0,N;for(inti=1;i<10;i+=2)for(intj=0;j<i;j++)cnt+=1;cout<<cnt;A.100B.55C.45D.25答案:D。解析:内层循环i次,每次cnt加1,所以只要知道外层的i依次是多少就可以知道cnt加了多少次1,而外层循环依次为1、3、5、7、9,所以cnt=1+3+5+7+9=25,因此正确选项是D。9.下面C++代码执行后其输出是()。inti,j;for(i=1;i<12;i++){if(i%2==0)continue;for(j=0;j<i;j++)if(i*j%2==0)break;if(j>=i)cout<<i*j<<"";}if(i>=12)cout<<(i*j);A.00B.11C.0D.011答案:C。解析:第8行先计算i*j再算%2,而j初始都为0,所以无论i为多少i*j%2都为0,都会break结束j的值为0,由于j为0,所以输出一定是0,排除B和D,其中i最小为1,不满足第10行if条件,因此只会输出一个0,因此正确选项是C。10.与下面C++输出效果不一致的代码是()。inti;for(i=0;i<10;i++)cout<<i;A.inti=0;while(i<10){cout<<i;i+=1;}B.inti=0;while(i<10){i+=1;cout<<i;}C.inti=0;while(true){cout<<i;i+=1;if(i>=10)break;}D.inti=0;while(true){if(i>=10)break;cout<<i;i+=1;}答案:B。解析:参考代码的作用是依次输出0~9,A、C、D均是先输出i再加1,效果相同,而B选项是先加1,再输出,输出结果为1~10,效果不同,因此正确选项是B。11.下面C++代码执行后输出是()。intnum=0;while(num<=5){num+=1;if(num%3)continue;printf("%d#",num);}if(num>5)printf("%d",num);A.3#6#B.3#6#6C.1#2#3#4#5#6#D.1#2#3#4#5#6#6答案:B。解析:循环中num依次为1~6,只有当num为3、6时不满足第4行if条件,输出3#6#,循环结束后num的值为6,满足第8行if,输出num的值6,因此正确选项是B。12.下面C++代码执行后,其输出是()。intcnt=0;for(inti=0;i<5;i++)for(intj=i;j<4;j++)cnt+=1;cout<<cnt;A.9B.10C.14D.20答案:B。解析:外层循环5次i依次为0~4,内层循环与i有关,内层循环次数依次为4次、3次、2次、1次,总循环次数为4+3+2+1=10,所以cnt的值为10,因此正确选项是B。13.漂亮数的定义是:如果N能被M整除,或者某位是M,或者N的每位数之和能被M整除,则说N是M的漂亮数。如果三个条件都满足,则是完整漂亮数。123是3的完整漂亮数,因为123能被3整除,也含有3,其每位数之和为6也能被3整除。下面的代码用于判断N是否为M的完整漂亮数并输出。相关说法正确的是()。intN,M,Flag,Sum,num;cout<<"请输入N,不等于0的正整数:";cin>>N;cout<<"请输入M,M必须大于1小于9:";cin>>M;Sum=0;//记录各位数之和。Flag=0;//假设记录N不含有M。while(N!=0){num=N%10;Sum+=num;if(num==M)Flag=1;N/=10;}if((N%M==0)&&(Flag==1)&&(Sum%M==0))//L1printf("%d是%d的完整漂亮数",N,M);elseprintf("%d不是%d的完整漂亮数",N,M);A.代码能完成题目设定目标。B.在while循环中N最终将变成0,因此L1行代码中N%M将总是满足条件,可以在while前增加一行代码intold_num=N;并将L1开始这4行代码中的N都改为old_num就可以做出正确的判定。C.while循环中if判断语句可以增加else子句,其内容为Flag=0。D.如果先后输入0和3,则肯定会输出0是3的完整漂亮数。答案:B。解析:逐个选项分析。A:在while循环中N最终将变成0,因此L1行代码中N%M将总是满足条件,不能完成题目设定目标。C:如果增加else子句,那么只要num不是M,Flag就会被重置为0,即使之前可能已经设置为1,而题目要求是某位为M才标记,导致逻辑错误。D:若N=0则while不成立,Flag为0第19行的if不成立输出0不是3的完整漂亮数。只有B的描述是正确的,在while中N不断除以10直到为0,导致最后判断不正确,因此需要提前保存原始N的值用于判断。14.阅读下面的C++代码。执行后如输入5,其输出的字符图形是()。intn,i,j,k;cin>>n;for(i=0;i<n;i++){for(j=0;j<n-i-1;j++)cout<<"";for(k=0;k<2*i+1;k++)cout<<"*";cout<<endl;}A.B.C.D.答案:B。解析:当n=5时,外层循环控制行数,i=0~4共5行。第1行(i=0):打印空格j<5-0-1即4个,打印星号k<2*0+1即1个。第2行(i=1):打印空格j<5-1-1即3个,打印星号k<2*1+1即3个。……等等。第5行(i=4):打印空格j<5-4-1即0个,打印星号k<2*4+1即9个。观察选项图形,只有B符合“空格数”递减星号按1,3,5…递增的金字塔形状。15.某学校举办“十佳歌手大奖赛”,经过选拔最终参赛选手有25人,评委10人,最终计分规则去掉一个最高分去掉一个最低分作为该参赛选手的最终得分,并输出该得分。如果单个评委可给满分为10分,则相关说法正确的是()。floattotal_score,max_score,min_score,now_score;for(inti=0;i<25;i++){max_score=0;//记录最高分。min_score=10;//记录最低分。total_score=0;//记录总分。for(intj=0;j<10;j++){cin>>now_score;//录入评委打分。max_score=max(max_score,now_score);//L1min_score=min(min_score,now_score);//L2total_score+=now_score;}cout<<(total_score-max_score-min_score);}A.程序总体逻辑错误。因为要去掉最高分和最低分,需要排序,而程序没有相关代码。B.内层循环和外层循环之间的三行代码也就是max_score=0开始的三行代码应该移动到外层循环外。C.L1和L2标记的两行代码可以分别改为简单的if语句或?:语句。D.total_score+=now_score不可以更改为total_score=total_score+now_score。答案:C。解析:逐个分析选项。A:求最大值和最小值可以使用擂台法,不一定需要排序,A选项错误。B:外层循环遍历的是参赛选手,每个选手的得分都需要重新统计,如果移到外层循环外会累加所有选手的数据,B选项错误。C:max和min求解最大值或最小值可以用if语句或三目运算符实现,C选项正确。D:+=是复合赋值运算符,total_score+=now_score等价于total_score=total_score+now_score,D选项错误。二、判断题(每题2分,共20分)。16.鸿蒙是华为公司开发的一款操作系统,那么它能够将正确的源程序翻译成目标程序,并运行。()。答案:错误。解析:操作系统(如鸿蒙)的主要功能是管理计算机的硬件与软件资源,并为用户和应用程序提供接口。将源程序翻译成目标程序(机器语言)是编译程序(编译器)或解释程序的功能,而非操作系统的直接功能。因此该说法错误。17.题C++表达式5<10&&20对应的逻辑值为true。()。答案:正确。解析:<运算符优先级高于&&,先计算5<10,结果为true,再计算true&&20,在C++中非0为true,所以整个表达式结果为true,因此说法正确。18.题C++表达式10/0.333333==10/(1/3)的值为true。()。答案:错误。解析:表达式右边先计算1/3=0,再计算10/0,因为0不能作为除数,所以会运行错误,因此说法错误。19.下面C++代码中N是整数,执行时无论输入负整数、0或正整数,其输出都将是0。()。cin>>N;while(N)N/=10;cout<<N;答案:正确。解析:(1)输入0,while条件不成立,输出N为0。(2)输入正整数,假设N为12,那么循环中N的位数不断减少,直至为0,输出N为0。(3)输入负整数,假设N为-12,那么循环中-12/10=-1,-1/10=0,最终N也为0。综上所述,无论N为何值,最终输出为0。此说法正确。20.下面的C++代码执行后,其输出是40。()。inta,b;a=4;b=a==5;cout<<a<<''<<b;答案:正确。解析:第2行a先赋值为4,第3行中==优先级高于=,先计算4==5条件不成立结果为false,在C++中false为0,所以b的值为0,此过程中a的值不会改变,所以输出为40,此说法正确。21.题C++代码中对表达式('Z'-'A')<('z'-'A')的结果输出为0。()。答案:错误。解析:‘z’的ASCII码值大于‘Z’的ASCII码值,所以同时减去‘A’,结果也应该是('z'-'A')大于('Z'-'A'),所以结果应该为true,输出为1,此说法错误。22.下面的C++代码可以用于判断正整数N的位数(即几位数,如123是3位数,12为2位数)。()。intN,N10,i;cin>>N;N10=10,i=1;while(1){if(N%N10==N){printf("%d是%d位数",N,i);break;}i++,N10*=10;}答案:正确。解析:变量i用于记录位数,N10代表10i,循环中每次判断N%N10==N即判断N<10i是否首次成立,如果成立说明N的位数为i,如果不成立,说明N至少有i+1位,于是i++,N10*=10,继续循环。假设N=12。i=1,N10=10:12%10==12?否(余数是2),继续。i=2,N10=100:12%100==12成立→输出“12是2位数”,结束。此说法正确。23.计算交叉加减的结果,形如1-2+3-4+5-…下面C++代码中的变量都是整型,则将Flag=-Flag改为Flag-=Flag效果相同。()。cin>>N;Flag=-1;tnt=0;for(i=1;i<N+1;i++){Flag=-Flag;tnt+=Flag*i;}cout<<tnt;答案:错误。解析:Flag=-Flag是取反操作,Flag初始为-1,第1次变为1,第2次变为-1,以此来实现符号交替,但如果修改为Flag-=Flag,等价与Flag=Flag-Flag,无论Flag为何值结果都为0,无法实现题目要求,因此说法错误。24.下列C++代码段执行后将输出55。()。intcnt=0;for(i=0;i<10;i++)for(j=i;j<10;j++)cnt+=1;cout<<cnt;答案:正确。解析:外层循环i从0变化到9,内层循环j从i变化到9。当i=0时,j从0到9,共执行10次。当i=1时,j从1到9,共执行9次。……等等。当i=9时,j从9到9,共执行1次。总执行次数cnt=10+9+8……+1=55,此说法正确。25.下面C++代码执行后输出如下,因为代码printf("\n")没有任何可读内容,删除不影响输出效果。()。for(inti=1;i<10;i++){for(intj=1;j<10;j++)printf("%3d",i*j);printf("\n");}答案:错误。解析:printf("\n")实现的是在每一行结果输出后进行换行,如果没有printf("\n")那么所有输出都在一行,无法实现上图的效果,此说法错误。三、编程题(每题25分,共50分)。26.试题名称:环保能量球。时间限制:1.0s。内存限制:512.0MB。题目描述:小杨最近在玩一个环保主题的游戏。在游戏中,小杨每行走1公里就可以获得1点“环保能量”。为了激励玩家,游戏设置了“里程奖励”:小杨每行走x公里,游戏就会额外奖励1点能量。现在已知小杨总共行走了n公里,请你帮他计算,他一共能获得多少点环保能量?输入格式:第一行包含一个正整数t,代表测试数据组数。对于每组测试数据:(1)第一行包含一个正整数n,代表行走的公里数。(2)第二行包含一个正整数x,代表奖励触发的间隔。输出格式:对于每组测试数据,输出一个整数,代表小杨获得的环保能量总数。样例解释:对于第1组数据n=5,x=2——小杨行走获得5点能量。此外,他在第2公里和第4公里时各获得1点额外奖励,总共5+2=7点。对于第2组数据n=10,x=3:行走获得10点。他在第3、6、9公里时各获得1点额外奖励,总共10+3=13点。对于第3组数据n=2,x=5:行走获得2点。由于行走路程不足5公里,没有额外奖励,总共2点。数据范围:对于全部数据,保证1≤t≤100,1≤n,x≤1000。参考程序。#include<iostream>usingnamespacestd;intmain(){intt,n,x;if(!(cin>>t))return0;while(t--){cin>>n>>x;intans=0;for(inti=1;i<=n;i++){ans+=1;//基础能量。if(i%x==0){ans+=1;//额外奖励。}}cout<<ans<<endl;}return0;}解析:先输入t,外层循环t次表示t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力工程招标投标指南
- 车联网系统安全规范
- 基础设施安全巡查与维护手册
- 电商虚拟模特形象使用权协议2025
- 安徽省安庆市潜山市部分学校联考2025-2026学年下学期八年级下学期开学生物学试卷(含答案)
- AI赋能库存成本控制:从技术应用到价值落地
- 第9单元 实验活动6 一定溶质质量分数的氯化钠溶液的配制 教学设计
- 2026七年级上语文文学常识记忆方法
- 2026七年级下语文层次分明方法指导
- 2025 六年级地理下册西亚的自然环境课件
- 2026年内蒙古电子信息职业技术学院单招综合素质考试题库带答案详解(精练)
- 塔吊作业安全技术交底
- 2026浙江绍兴杭绍临空示范区开发集团有限公司工作人员招聘23人考试参考题库及答案解析
- 上海高校毕业生登记表(本专科生)
- 绿色低碳建筑设计 课件全套 第1-8章 绿色低碳建筑设计概论-实践案例分析
- 部编版小学语文四年级下册第一单元教材解读课件
- 苏教版科学2023四年级下册全册教案教学设计及反思
- GB/T 5976-2006钢丝绳夹
- GB/T 21633-2020掺混肥料(BB肥)
- CJJ28-2014城镇供热管网工程施工及验收规范
- ISO45001职业健康安全管理体系培训
评论
0/150
提交评论