版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年3月GESP认证C++二级真题(含答案)一、单项选择题(共15题,每题2分,共30分)1.在C++语言中,下列用户自定义标识符符合语法规范的是()。A.3GESPB.mar-2026C._scoreD.switch2.下列C++表达式的计算结果为int类型的是()。A.5/2.0B.5.0/2C.(int)5.8/2D.5.2%23.阅读如下C++代码片段,执行后输出的内容是()。intx=12;if(x>10)cout<<"A";if(x>15)cout<<"B";elsecout<<"C";A.ABB.ACC.AD.C4.下列关于C++中switch语句的说法,正确的是()。A.switch后面括号内的表达式可以是double类型的浮点数B.同一个switch结构中,不同case后面的常量值可以重复C.每个case分支后面必须书写break语句,否则会触发编译错误D.default子句可以放置在所有case子句的前面,不影响逻辑判断5.下列for循环语句中,循环体的执行次数是()。for(inti=0;i<=10;i+=2){循环体语句}A.5次B.6次C.10次D.11次6.阅读如下C++代码片段,执行结束后变量s的值是()。inti=1,s=0;while(i<=5){s+=i;i++;}A.10B.15C.20D.257.下列C++一维数组的定义语句中,语法正确的是()。A.inta(5);B.intn=5,a[n];C.inta[5]={1,2,3};D.inta[];8.已知inta[5]={2,4,6,8,10};,下列数组元素访问表达式的值为6的是()。A.a[2]B.a[3]C.a[0]+5D.a[4]/29.已知charc='A';下列语句可以将变量c的值修改为大写字母'C'的是()。A.c=c+2;B.c="C";C.c='A'+3;D.c+2=c;10.在C++中,若要计算浮点数x的y次幂(即x^y),需要引入cmath头文件并调用的函数是()。A.pow(x,y)B.sqrt(x)C.abs(x)D.max(x,y)11.下列关于do-while循环和while循环的区别,说法正确的是()。A.do-while循环的循环体至少会执行一次B.do-while循环的循环条件判断在循环体执行之前进行C.do-while循环中不能使用break语句跳出循环D.do-while循环仅能用于固定次数的计数型循环12.阅读如下C++代码片段,执行后输出的内容是()。for(inti=1;i<=5;i++){if(i%3==0)break;cout<<i;}A.12B.123C.1245D.1234513.若要判断整数x是3的倍数或者5的倍数,下列逻辑表达式书写正确的是()。C.x%3+x%5==0A.4B.5C.8D.不确定15.阅读如下C++程序,运行后输出的结果是()。usingnamespacestd;intmain(){inta[4]={1,3,5,7};intt=0;for(inti=0;i<4;i++){if(a[i]>4)t+=a[i];}cout<<t;return0;}A.4B.9C.12D.16二、判断题(共10题,每题2分,共20分。请判断下列表述是否正确,正确的在括号内填√,错误的填×)1.在C++中,定义变量语句inta=b=10;是完全合法的,可以同时给a和b两个变量赋值为10。()2.C++中if语句的条件表达式只能使用布尔类型的常量或变量,使用整型值作为条件时会触发编译错误。()3.for循环语法结构中的初始化表达式、循环条件表达式、增量表达式都可以根据需求省略,但表达式之间的两个分号不能省略。()4.使用cin读取字符数组存储的字符串时,遇到空格、制表符或换行符会停止读取,因此无法通过单次cin>>操作读取包含空格的字符串。()5.switch语句中,case分支后的常量值必须是整型、字符型等编译期可确定的常量,且同一个switch结构中不能出现重复的case常量值。()6.执行C++表达式7/2的结果为3.5,和7.0/2的计算结果完全相同。()7.do-while循环的语法结构中,while(条件)后面的分号是可选的,省略分号程序依然可以正常编译运行。()8.若已定义inta=5;则执行语句if(a=0)cout<<"及格";时,会判断a的值是否等于0,因为a的值等于0等价于false,因此不会输出任何内容。()9.在循环结构中,break语句和continue语句的作用完全相同,都是提前终止当前循环的执行。()10.字符常量'0'和整数0在内存中存储的数值是完全相同的,没有任何区别。()三、编程题(共2题,共50分)1.(20分)题目描述:编写程序实现公历月份天数查询。输入一个年份和一个月份(年份取值范围为1900≤year≤2100,月份取值范围为1≤month≤12),输出该月份对应的天数。闰年判断规则为:能被4整除但不能被100整除,或者能被400整除的年份为闰年;闰年2月有29天,平年2月有28天;1、3、5、7、8、10、12月每月固定31天,4、6、9、11月每月固定30天。输入格式:一行输入两个整数,分别表示年份year和月份month,两个整数之间用单个空格分隔。输出格式:一行输出一个整数,表示对应月份的天数。样例输入1:20242样例输出1:29样例输入2:20264样例输出2:30样例输入3:19002样例输出3:282.(30分)题目描述:某次GESPC++二级认证考试共有n名考生参加,考试满分为100分,及格线为60分(成绩≥60分为及格)。请编写程序,读取n名考生的考试成绩,依次统计三个核心指标:所有考生中的最高成绩、所有考生中的最低成绩、成绩达到及格线的考生人数。输入格式:第一行输入一个正整数n(1≤n≤1000),表示考生总人数;第二行输入n个取值范围在0到100之间的整数,依次表示每名考生的成绩,整数之间用单个空格分隔。输出格式:一行输出三个整数,依次表示最高成绩、最低成绩、及格人数,三个整数之间用单个空格分隔。样例输入1:58559927348样例输出1:92483样例解释1:5名考生的成绩分别为85、59、92、73、48,最高分为92,最低分为48,成绩≥60分的考生共3人,因此按顺序输出三个结果。样例输入2:3600100样例输出2:10002样例解释2:3名考生的成绩分别为60、0、100,最高分为100,最低分为0,其中60分、100分达到及格线,及格人数共2人。参考答案与解析一、单项选择题(每题2分,共30分)1.答案:C解析:C++标识符命名需满足三个规则:一是只能由字母、数字、下划线三类字符组成;二是不能以数字作为开头;三是不能使用C++预留的关键字。选项A以数字开头,不符合规则;选项B包含减号特殊字符,不符合规则;选项D中switch是多分支选择结构的专用关键字,不能作为用户自定义标识符;选项C以下划线开头,后续字符为合法字母组合,完全符合命名规范。2.答案:C解析:C++表达式计算时会根据操作数类型发生隐式类型转换,强制类型转换会将指定值转换为目标类型。选项A中2.0为double类型,整数5会被隐式转换为double,运算结果为double类型的2.5;选项B中5.0为double类型,整数2会被隐式转换为double,运算结果为double类型的2.5;选项C通过强制类型转换将浮点数5.8转换为int类型的5,两个整数执行除法运算时采用整数除法规则,结果为int类型的2;选项D中取模运算符%要求两侧操作数必须为整数类型,浮点数参与取模运算会触发编译错误,无法得到合法结果。3.答案:B解析:C++中else分支遵循“就近配对”原则,即else始终与距离它最近的、未配对的if组成完整分支结构。本题中存在两个独立的if语句,else与第二个判断x>15的if配对。执行时,第一个if判断x=12>10成立,输出字符'A';第二个if判断x=12>15不成立,执行配对的else分支,输出字符'C',因此最终输出内容为AC。4.答案:D解析:选项A错误,switch语句要求括号内的表达式必须是整型、字符型、枚举类型等可进行精确相等匹配的离散类型,浮点数因存在精度问题无法做精确相等判断,不能作为switch的表达式;选项B错误,switch的case分支常量值必须唯一,重复的常量值会导致编译阶段报错;选项C错误,break语句是case分支的可选组成部分,省略时会发生“case穿透”,即执行完当前case的语句后继续执行后续case分支的内容,不会触发编译错误;选项D正确,default子句用于处理所有case都不匹配的场景,其位置不影响匹配逻辑,可放置在switch结构内的任意位置。5.答案:B解析:本题中循环变量i的初始值为0,循环持续条件为i<=10,每次循环执行完成后i的值增加2,因此i的合法取值依次为0、2、4、6、8、10,共6个满足循环条件的值,对应循环体共执行6次。6.答案:B解析:代码实现1到5的整数累加逻辑:i从1开始,每次将i的值累加到s中,之后i自增1,直到i>5时退出循环。累加计算过程为s=0+1+2+3+4+5=15。7.答案:C解析:选项A错误,C++定义数组时长度参数必须放置在方括号内,小括号用于函数调用或构造对象,无法用于定义数组;选项B错误,标准C++中静态数组的长度必须是编译阶段可确定的常量表达式,变量n的值在程序运行时才能确定,不能作为静态数组的长度;选项C正确,当初始化列表的元素个数少于数组定义长度时,数组中剩余的元素会被自动初始化为0,语法完全合法;选项D错误,定义数组时如果没有指定长度,必须通过初始化列表的元素个数推断数组长度,既无长度说明也无初始化列表的数组定义属于语法错误。8.答案:A解析:C++一维数组的下标从0开始计数,因此数组a的元素下标0到4依次对应值2、4、6、8、10。选项A中a[2]的值为6,符合题目要求;选项B中a[3]的值为8;选项C中a[0]+5的计算结果为2+5=7;选项D中a[4]/2的计算结果为10/2=5。9.答案:A解析:大写字母在ASCII编码中连续排列,'A'的编码值为65,'C'的编码值为67。选项A中c初始值为'A'(65),加2后为67,对应字符'C',赋值合法;选项B中"C"是字符串常量,类型为constchar*,无法直接赋值给char类型变量,存在类型不匹配错误;选项C中'A'+3的计算结果为68,对应大写字母'D',不符合要求;选项D中c+2是临时计算得到的右值,不能作为赋值运算符的左值,属于语法错误。10.答案:A解析:cmath头文件中提供了常用的数学运算函数:pow函数接收两个参数,返回第一个参数的第二个参数次幂的计算结果;sqrt函数用于计算参数的算术平方根;abs函数用于计算整数的绝对值;max函数用于返回两个参数中的较大值。因此计算x的y次幂需要调用pow(x,y)。11.答案:A解析:while循环的执行逻辑是先判断循环条件,条件成立时才执行循环体,若初始条件不成立,循环体可能一次都不执行;do-while循环的执行逻辑是先执行一次循环体,再判断循环条件,条件成立则继续执行,因此无论初始条件是否成立,循环体至少执行一次,这是二者的核心区别。选项B错误,do-while的条件判断发生在循环体执行之后;选项C错误,do-while循环中可以使用break语句直接跳出循环;选项D错误,do-while和while都支持条件控制的不定次数循环,并非只能用于固定次数的计数场景。12.答案:A解析:break语句的作用是直接跳出当前所在的最内层循环,终止整个循环的执行。循环过程中i=1时,1%3不等于0,不触发break,输出1;i=2时,2%3不等于0,不触发break,输出2;i=3时,3%3等于0,执行break语句直接退出循环,后续i=4、i=5的迭代不会执行,因此最终输出内容为12。13.答案:A解析:使用双引号包裹的字符串常量初始化字符数组时,编译器会自动在字符串的末尾添加一个'\0'作为字符串结束标记。"GESP"包含4个可见字符,加上自动添加的结束标记共5个字符,每个char类型占1字节存储空间,因此该数组总共占用5字节内存。15.答案:C解析:程序遍历数组a的所有元素,将值大于4的元素累加到变量t中。数组元素依次为1、3、5、7,其中大于4的元素是5和7,累加和为5+7=12,因此最终输出12。二、判断题(每题2分,共20分)1.答案:×解析:该语句为单变量定义语句,仅定义了int类型变量a,赋值表达式中引用的b如果未在语句之前提前定义,会触发“未定义标识符”的编译错误;即使b已经提前定义,该语句也不会完成b的定义,仅会对已存在的b赋值,因此“同时给a和b两个变量赋值为10”的表述错误。2.答案:×解析:if语句的条件表达式可以是任意能够隐式转换为布尔类型的表达式,整型值参与条件判断时,非0值会被转换为逻辑真(true),0会被转换为逻辑假(false),不会触发编译错误。3.答案:√解析:for循环的三个组成表达式均为语法可选项,可根据编程需求省略,全部省略时写为for(;;),代表无初始化、循环条件恒为真、无每次迭代增量的无限循环,语法完全合法;但分隔三个表达式的两个分号是强制语法要求,不能省略,否则会触发编译错误。4.答案:√解析:cin的>>运算符读取字符串时,以空白字符(包括空格、制表符、换行符、回车符等)作为读取终止标记,因此包含空格的字符串无法通过单次>>操作完整读取。5.答案:√解析:switch语句在编译阶段会根据case常量构建跳转表,因此要求case后的值必须是编译阶段可确定的常量,且同一个switch结构中的case常量值不能重复,否则会导致编译错误。6.答案:×解析:当除法运算符/两侧的操作数均为整数时,执行整数除法规则,运算结果为整数商,舍去小数部分,因此7/2的结果是int类型的3;而7.0是double类型,运算时整数2会被隐式转换为double类型,7.0/2的结果是double类型的3.5,二者的值和数据类型均不相同。7.答案:×解析:do-while循环是独立的语句结构,语法要求while(条件表达式)的末尾必须添加分号作为语句结束标记,省略分号会触发编译错误。8.答案:×解析:条件表达式中的a=0是赋值运算,并非用于相等判断的==运算符,程序执行时会先将0赋值给a,再将赋值结果0转换为布尔值false,虽然最终确实不会执行输出语句,但题目将赋值运算错误描述为相等判断,核心概念表述错误。9.答案:×解析:break语句的作用是跳出当前所在的最内层循环,直接终止整个循环的执行;continue语句的作用是跳过本次循环中continue之后的剩余语句,直接进入下一次循环的条件判断,不会终止整个循环,二者的作用存在本质区别。10.答案:×解析:字符常量'0'对应的ASCII编码值为48,和整数0的存储数值不同,二者属于不同的数据类型,参与算术运算、逻辑判断时的结果存在明显差异。三、编程题(共50分)1.(20分)参考代码:usingnamespacestd;intmain(){intyear,month;cin>>year>>month;boolis_leap=false;//按照闰年规则判断}intdays;switch(month){case1:case3:case5:case7:case8:case10:case12:days=31;break;case4:case6:case9:case11:days=30;break;case2:days=is_leap?29:28;break;default:days=0;//题目保证输入月份合法,该分支无实际触发场景}cout<<days<<endl;return0;}评分标准:(1)正确定义所需变量,能够按照输入格式正确读取年份和月份两个整数,得4分;(2)正确实现闰年判断逻辑,完整覆盖“能被4整除但不能被100整除”“能被400整除”两个判断条件,逻辑无遗漏、无错误,得6分;(3)正确匹配不同月份的天数规则,31天、30天的月份无遗漏、无错误,得6分;(4)正确处理2月在平年、闰年的天数差异,按照题目要求的格式输出结果,无多余字符或格式错误,得4分。边界值测试说明:重点考察1900年2月(平年28天)、2000年2月(闰年29天)、2100年2月(平年28天)、1月、12月等边界输入,每出现一个边界场景逻辑错误扣2分,因格式问题(如多余空格、换行缺失)扣1-2分,逻辑完全错误得0分。2.(30分)参考代码:usingnamespacestd;intmain(){intn;cin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026综合岗面试真题汇编 题型分析含答案
- 2026年 财会岗面试高频题 题型分析含答案
- 2022026 年 事业编财会岗面试高频题集 含答案
- 2026年车间安全例会召开管理规定
- 春运安全生产重视措施讲解
- 小学英语教资面试阅读理解试卷 2026下半年
- 2026年内蒙古联通人员招聘参考题库及答案详解
- 2026年宁夏回族自治区烟草专卖局人员招聘考试题库及答案详解
- 肝硬化诊疗专家共识(2026版)
- 2026年武汉市公共交通集团有限责任公司人员招聘考试参考试题及答案详解
- 土方开挖及基坑支护专项施工方案
- 管廊施工应急预案方案
- 2026年山东烟台市高三二模高考数学试卷试题(含答案)
- 2026年黑龙江哈三中高三一模英语试题含答案
- 2026年中国宠物行业白皮书 消费版
- 低空空域资源合理配置与运行效率优化策略研究
- 2026年人工智能训练师(二级)实操技能综合试题及解析
- 尺神经松解术课件
- 储能方面培训
- 显微手足外科科普
- AI与3D打印融合的个性化智能医疗方案设计
评论
0/150
提交评论