版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年9月GESP编程能力认证C++等级考试二级真题(含答案)单项选择题(每题2分,共20分)1.以下C++变量定义语句中,符合语法规范且变量初值设置完全合理的是?A.int3num=10;B.floatscore=97.5;C.charc="A";D.boolflag=1.5;2.假设变量a初始值为5,执行语句`a+=a-=a*a;`之后,a的最终值为以下哪个选项?A.-40B.-20C.0D.253.运行如下代码片段,输入整数score为85时,程序的输出结果是?```cppintscore;cin>>score;if(score>=90)cout<<"A";elseif(score>=80)cout<<"B";elseif(score>=70)cout<<"C";if(score>=60)cout<<"D";elsecout<<"F";```A.BB.BDC.CDD.D4.执行循环语句`for(inti=3;i<=18;i+=3)`,循环体的实际执行总次数为?A.5B.6C.7D.85.已知字符'a'的ASCII码值是97,执行语句`charc='a'+4;cout<<c;`,程序输出结果为?A.'e'B.101C.'d'D.编译报错6.以下关于C++一维数组的定义语句,存在编译语法错误的是?A.intarr[5]={1,2,3};B.charstr[10]="hello";C.intarr[]={1,2,3,4,5};D.intarr[3]={1,2,3,4};B.1C.trueD.false8.运行如下代码片段,变量sum的最终输出结果是?```cppintsum=0;for(inti=1;i<=3;i++){for(intj=1;j<=i;j++){sum+=1;}}```A.3B.6C.9D.129.运行如下代码时,如果用户连续输入字符序列`1234`且不添加任何空白分隔符,程序的输出结果是?```cppchara,b;cin>>a>>b;cout<<(int)a+(int)b;```A.12B.3C.99D.123410.以下关于C++常量的描述,错误的是?A.const修饰的只读变量值在程序运行期间不能被修改B.字面常量3.14默认属于双精度浮点数类型C.符号常量必须通过#define预处理指令定义D.单个字符型常量在内存中占用1字节存储空间单选题参考答案与逐题解析1.答案选B。A选项变量名首字符不允许为数字,违反C++标识符命名规则;C选项字符常量必须使用单引号包裹,双引号标识的是字符串字面量,不能赋值给单个char类型变量;D选项bool类型仅支持整数赋值,1.5是浮点数,隐式转换会丢失精度,不符合设置合理的要求,只有B选项完全合法。2.答案选A。C++中赋值复合运算符为右结合性,运算顺序从右向左执行:第一步先计算`a*a`得到25,第二步执行`a-=25`,此时a的初始值为5,运算后a更新为-20,第三步执行`a+=-20`,最终a的值为-40。3.答案选B。if-else链在没有大括号包裹时,else关键字仅和最近的未匹配if绑定,本题中最后一个`if(score>=60)`是完全独立的分支判断,不属于前面的elseif链,85分既满足第二个elseif条件输出B,也满足最后一个独立if条件输出D,最终输出结果为BD。4.答案选B。循环变量i的取值依次为3、6、9、12、15、18,全部满足i<=18的判定条件,共执行6次,当i自增到21时跳出循环。5.答案选A。字符变量本质存储的是ASCII码整数值,可以直接参与算术运算,'a'的ASCII码为97,加4后得到101,对应ASCII表中的小写字母'e',cout直接输出字符形态而非整数值。6.答案选D。数组初始化时,初始化列表的元素数量不允许超过数组声明的长度,D选项声明数组长度为3,初始化列表传入4个元素,会触发编译报错;A选项未赋值的元素默认填充0,B选项字符串末尾自动补'\0'符合C++语法,C选项省略数组长度时编译器会根据初始化列表元素数量自动推导数组大小,均合法。9.答案选C。cin读取char类型变量时会逐个读取输入流中的字符,没有空白分隔符时,变量a读取到字符'1',对应ASCII码49,变量b读取到字符'2',对应ASCII码50,强转为整数后相加结果为99。10.答案选C。C++中定义符号常量有两种主流方式,分别是#define宏定义和const修饰的只读变量,后者还支持类型检查,因此符号常量并非只能用#define定义。判断题(每题2分,共20分)1.C++中for循环的三个表达式均可以省略,写法`for(;;)`是合法的无限循环语句。2.执行语句`intarr[5];arr[5]=10;`属于合法操作,程序不会出现任何运行异常。3.C++逻辑运算支持短路求值特性:若左侧运算结果已经可以确定整个表达式的最终值,右侧的表达式将不会被执行。4.if语句后面的大括号只能包裹1条执行语句,包裹多条语句会触发编译报错。5.C++中两个浮点数可以直接使用==运算符判断相等,不会出现任何精度误差问题。6.字符变量可以直接参与整数算术运算,本质是对变量存储的ASCII码值进行数值计算。7.break语句只能用在switch多分支语句中,无法在for、while循环语句中使用。8.二维数组定义为`intarr[3][4]`时,数组总共有12个元素,行下标合法范围为0~2,列下标合法范围为0~3。9.执行语句`intx=2;x+=x-=x*x;`之后,变量x的最终值为0。10.C++标准输出流cout默认不会主动添加换行效果,若要输出换行符必须手动写入endl或者'\n'字符。判断题参考答案与逐题解析1.正确。省略for循环的第二个条件表达式时,编译器默认将判定条件视为逻辑真,`for(;;)`是C++标准认可的无限循环写法。2.错误。长度为5的数组合法下标范围是0~4,访问arr[5]属于数组越界,触发内存访问的未定义行为,大概率导致程序运行崩溃。3.正确。短路求值是逻辑运算的标准特性,例如表达式`(a>0)&&(a++)`当a初始值为0时,右侧的a++语句完全不会执行。4.错误。大括号的作用是包裹多条语句形成复合语句,C++语法中复合语句整体等价于单条语句,完全可以放在if分支后作为执行体。5.错误。浮点数在内存中采用二进制存储,存在天然的精度损失,例如0.1累加10次的结果通常不会精确等于1.0,行业通用的判断方式是比较两个浮点数的差值绝对值是否小于1e-6。6.正确。字符变量在内存中占用1字节,存储内容就是对应字符的ASCII码整数值,直接参与算术运算可以实现大小写转换、字符偏移等效果。7.错误。break语句的作用是跳出最近一层的循环或者switch分支,完全可以在循环语句中使用,用来提前终止循环执行。8.正确。二维数组行下标从0开始计数,3行对应下标0、1、2,4列对应下标0、1、2、3,总元素数量为3*4=12。9.错误。按照赋值运算符右结合的规则,分步运算后x的最终值为-4,不等于0。10.正确。cout本身不会自动追加任何字符,所有输出内容会连续显示在同一行,只有手动添加换行指令才会切换输出行。编程题(每题30分,共60分)第一题:小区快递柜阶梯计费【题目描述】某小区智能快递柜采用分段阶梯计费规则,寄存时长按照自然小时向上取整计算,不足1小时的部分按1小时统计,具体收费标准如下:寄存时长t不超过2小时,完全免费;2小时<t≤6小时,超过2小时的部分每小时收费1元;6小时<t≤24小时,6小时以内的区间总计收费4元,超过6小时的部分每小时收费2元;寄存时长超出24小时的部分,每12小时收费10元,不足12小时也按12小时计算。现在给定n位用户的快递寄存时长,单位为分钟,请你依次计算每位用户最终需要支付的寄存费用,所有结果均为整数。【输入格式】第一行输入一个正整数n,表示用户总数量,1≤n≤100;接下来n行每行输入一个非负整数m,表示对应用户的快递寄存分钟数,0≤m≤100000。【输出格式】输出共n行,每行一个整数,依次对应每位用户的应付费用,单位为元。【样例输入】3120300720【样例输出】0316【样例解释】第一位用户寄存120分钟,刚好等于2小时,满足免费条件,费用为0;第二位用户寄存300分钟等价于5小时,超出2小时的部分为3小时,费用为3元;第三位用户寄存720分钟等价于12小时,6小时以内部分收费4元,6到12小时共6小时按每小时2元计算,总费用为4+6*2=16元。【参考实现思路与代码】首先将分钟转换为向上取整的小时数,利用整数运算特性`(m+59)/60`可以快速实现任意正整数分钟到小时的向上取整,避免调用数学库函数。之后按照题目给出的四段阶梯规则依次做分支判断,处理24小时以上的区间时,将超出24小时的时长同样做向上取整到12的倍数,计算对应的额外费用。参考代码如下:```cppusingnamespacestd;intmain(){intn;cin>>n;while(n--){intm;cin>>m;intt=(m+59)/60;//分钟转向上取整小时intcost=0;if(t<=2){cost=0;}elseif(t<=6){cost=t-2;}elseif(t<=24){cost=4+(t-6)*2;}else{cost=4+18*2;//前24小时固定费用为40元intover_time=t-24;intover_hour=(over_time+11)/12;cost+=over_hour*10;}cout<<cost<<endl;}return0;}```本题得分点分布:正确实现分钟转向上取整小时逻辑得10分,四段阶梯分支条件全部编写正确得10分,24小时以上超时部分的向上取整逻辑正确得5分,输入输出格式完全匹配要求得5分,累计30分。第二题:数字菱形奇偶位求和【题目描述】给定一个正整数n,生成一个边长为n的数字菱形,生成规则如下:前n行构成菱形的上半部分,第k行(k从1到n)的前n-k个位置打印空格,之后依次打印1到2k-1的连续正整数;菱形下半部分共n-1行,第k行(k从n-1倒序遍历到1)的前n-k个位置打印空格,之后依次打印1到2k-1的连续正整数。完整生成菱形图案之后,将所有元素按照行优先的顺序遍历,从左上角第一个元素开始计数下标(下标从1开始),统计所有下标为奇数位置的元素数值之和,最终打印菱形图案以及求和结果。要求每个数字之间用单个空格分隔,每行末尾不允许存在多余的空格。【输入格式】输入一个正整数n,1≤n≤20。【输出格式】第一行到第2n-1行输出符合规则的数字菱形,第2n行输出最终的求和整数结果。【样例输入】2【样例输出】112314【样例解释】n=2时,菱形所有元素按行优先遍历为1、1、2、3、1,下标1到5,奇下标对应元素为1(下标1)、2(下标3)、1(下标5),三者累加求和结果为4。【参考实现思路与代码】可以设置全局计数器变量记录当前遍历到的元素下标,每打印一个数字就将计数器自增1,当下标为奇数时累加对应元素值,打印每行元素时提前打印第一个数字,后续数字先输出空格再输出数值,就可以避免行末尾出现多余空格,完全匹配输出格式要求。参考代码如下:```cppusingnamespacestd;intmain(){intn,sum=0,cnt=0;cin>>n;//打印上半部分for(inti=1;i<=n;i++){//打印前置空格for(intj=1;j<=n-i;j++){cout<<"";}//打印数字for(intj=1;j<=2*i-1;j++){if(j!=1)cout<<"";cout<<j;cnt++;if(cnt%2==1){sum+=j;}}cout<<endl;}//打印下半部分for(inti=n-1;i>=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位工勤技能-江西-江西广播电视天线工二级(技师)历年参考题库含答案详解3套试卷
- 草酸中毒护理查房流程
- 2026下半年小学教师资格证考试学科冲刺密卷试卷及解析
- 2026年生物知识点图表记忆法 生物实验安全规范
- 平鲁区消防安全培训会
- 2026 年泥石流灾害发生不要顺沟往下跑警示主题
- 机械专业职业规划指南
- 2026事业单位工勤技能-江苏-江苏计量检定工三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-江苏-江苏农业技术员五级(初级工)历年参考题库含答案详解3套试卷
- 学画手就业前景深度分析
- JGJ142-2012 辐射供暖供冷技术规程
- NB-T10935-2022除氧器技术条件
- 烟煤胶质层指数测定仪不确定度评定报告
- 染色定型车间管理制度
- 机械工程材料与热加工课程概论1-6章
- 房屋出售独家委托协议
- 费森尤斯CRRT操作流程1
- 《大学美育》第一章理论
- 汨罗2022小学教师招聘考试真题及答案解析
- GB/T 41831-2022项目管理专业人员能力评价要求
- JJG 490-2002脉冲信号发生器
评论
0/150
提交评论