2025年6月GESP编程能力认证C++等级考试一级真题(含答案和解析)_第1页
2025年6月GESP编程能力认证C++等级考试一级真题(含答案和解析)_第2页
2025年6月GESP编程能力认证C++等级考试一级真题(含答案和解析)_第3页
2025年6月GESP编程能力认证C++等级考试一级真题(含答案和解析)_第4页
2025年6月GESP编程能力认证C++等级考试一级真题(含答案和解析)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年6月GESP编程能力认证C++等级考试一级真题(含答案和解析)2025年6月GESP编程能力认证C++一级考试试卷总分100分,考试时长90分钟,考试全程禁止使用任何电子设备、纸质参考资料,仅允许使用官方指定的C++编程环境完成答题。试卷题型包含单项选择题10道、判断题10道、编程题2道,全部答题结果最终以可编译运行、输出结果完全符合要求的代码为准。一、单项选择题(每题2分,共20分。每题只有一个正确选项,错选、漏选、不选均不得分)1.下列常见的计算机设备中,全部属于输出设备的组合是?A.键盘、显示器B.鼠标、打印机C.打印机、显示器D.扫描仪、投影仪答案:C解析:计算机设备按照数据传输方向分为输入设备和输出设备两大类,输入设备的功能是向计算机主机传输外部数据,输出设备的功能是将计算机处理完成的结果向外输出。本题中键盘、鼠标、扫描仪均属于典型的输入设备,显示器、打印机、投影仪均属于典型的输出设备,因此只有C选项的两个设备均为输出设备。该考点为GESP一级计算机基础常识类必考内容,每年真题中都会出现1-2道相关题型。2.C++程序中用于添加代码注释是开发者常用的功能,注释内容不会被编译器编译执行,下列注释写法中存在语法错误、无法通过编译的是?A.//计算两个整数的和的功能模块B./*以下代码用于输出最终运算结果*/C.//定义变量存储用户输入的里程数值//D./*判断积分是否满足额外奖励条件*答案:D解析:C++支持两种格式的合法注释:第一种是单行注释,以连续两个斜杠"//"作为起始标识,注释内容的有效范围为从起始标识开始到当前行结束,同一行中可以出现多个"//",也可以在"//"后继续添加额外的斜杠字符,不会引发语法错误,因此A、C选项的注释均合法。第二种是块注释,以"/*"作为起始标识,以"*/"作为结束标识,注释内容可以跨越多行,但是块注释必须保证起始标识和结束标识成对出现。D选项中的块注释只有起始的"/*",结束位置缺少对应的"*/"标识,会触发编译器的语法报错,因此本题正确答案为D。3.变量是C++程序中存储临时数据的核心载体,下列选项中给出的变量名,符合C++变量命名规范的是?A.123totalB.intC._student_ageD.score&num答案:C解析:C++的合法变量命名需要同时满足三个规则:第一,标识符只能由英文字母(区分大小写)、数字、下划线三种字符组成,不能出现其他特殊符号,因此D选项中包含非法字符"&",命名不合法。第二,标识符的第一个字符不能是数字,必须是字母或者下划线,A选项的第一个字符是数字1,因此命名不合法。第三,标识符不能是C++语言预先定义好的关键字,int是C++中用于定义整型变量的关键字,不能作为普通变量名使用,因此B选项命名不合法。只有C选项的命名完全符合上述三个规则,因此为正确答案。4.执行完以下C++代码片段后,整型变量a的最终数值是多少?inta=5;a*=a+3;A.8B.40C.28D.15答案:B解析:本题考查复合赋值运算符的运算优先级规则,所有的复合赋值运算符(包括+=、-=、*=、/=、%=等)的运算优先级都低于普通的算术加减运算符,运算结合方向为从右向左。本题中语句a*=a+3执行时,会先计算等号右侧的a+3部分,此时a初始值为5,因此a+3的运算结果为8,之后再执行a=a*8的等效运算,代入a的初始值5,计算得到5*8=40,最终赋值给变量a,因此a的最终值为40,本题答案为B。如果开发者错误认为复合赋值运算符优先级高于加减运算符,会先计算a*=a得到25,再加3得到28,误选C选项,这是一级考试中非常典型的易错考点。5.如果需要在C++程序中调用fixed和setprecision函数,实现将浮点数按照指定小数位数格式输出,必须在代码头部引入哪一个标准头文件?A.iostreamB.iomanipC.cmathD.cstdlib答案:B解析:C++标准库中,格式化输出相关的控制函数均定义在iomanip头文件中,setprecision、setw、setfill等格式控制符都属于该头文件的内容。iostream头文件仅包含cin、cout等基础输入输出相关的功能定义,cmath头文件包含sqrt、abs、sin等数学运算函数的定义,cstdlib头文件包含rand、system等工具函数的定义,因此本题正确答案为B。6.执行以下代码片段后,变量x和y的最终取值分别是?intx=2,y=3;if(x>y){x=x+1;}else{y=y+1;}A.x=3,y=3B.x=2,y=4C.x=3,y=4D.x=2,y=3答案:B解析:本题考查if-else分支语句的基础执行逻辑,程序运行时首先判断if后面括号内的条件表达式x>y是否成立,当前x取值为2,y取值为3,2>3的关系运算结果为逻辑假,因此if对应的代码块不会被执行,程序会跳转到else对应的代码块执行,将y的值加1,y从3修改为4,x的值全程没有发生变化,最终保持初始值2,因此x=2、y=4,答案选B。7.循环语句for(inti=0;i<=5;i++)会控制循环体总共执行多少次?A.4B.5C.6D.7答案:C解析:for循环的执行顺序为:首先执行初始化语句inti=0,仅执行1次,之后判断条件表达式i<=5是否成立,成立则执行循环体,执行完循环体后执行增量语句i++,之后再次回到条件判断步骤,直到条件表达式结果为假时退出循环。本题中i的取值依次为0、1、2、3、4、5时,条件i<=5均成立,共执行6次循环体,当i自增到6时,判断6<=5不成立,循环直接结束,因此循环体总共执行6次,答案选C。8.有定义语句charc='A';之后执行c+=3;再输出变量c的内容,屏幕上显示的结果是?A.'A'B.'D'C.'C'D.68答案:B解析:C++中字符类型变量在内存中实际存储的是字符对应的ASCII码数值,字符'A'的ASCII码十进制数值为65,字符类型变量可以直接参与整数算术运算,运算过程中会以对应的ASCII码值参与计算。因此执行c+=3时,等价于c=65+3=68,ASCII码68对应的大写英文字母为'D',直接输出字符变量c时,会自动将整型数值68解码为对应的字符'D'输出,因此屏幕显示内容为'D',本题答案选B。9.定义两个整型变量inta=3,b=4;下列选项给出的逻辑表达式中,运算结果为逻辑假的是?A.inta;cin>>a;B.constinta=10;a=20;C.charc='a';cout<<c;D.doubled=3.14;答案:B解析:C++中使用const关键字修饰的变量为常变量,常变量在定义时必须完成初始化赋值,之后整个程序运行过程中不允许修改常变量的数值,尝试对const常变量再次赋值的语句属于语法错误,编译器直接拒绝编译。A、C、D选项的代码片段均符合C++语法规则,可以正常编译运行,因此本题答案为B。二、判断题(每题2分,共20分。正确作答选√,错误作答选×,错选、漏选均不得分)1.C++程序的主函数main()必须写在所有其他自定义代码的最前面位置,否则程序无法正常通过编译。(×)解析:main()函数是C++程序的唯一入口函数,程序运行时会从main函数内部的第一条语句开始执行,但是main函数本身的书写位置没有强制要求,可以放在代码的任意合法位置,只要保证调用的自定义内容提前完成声明即可,即使放在所有其他代码的最后面,也完全可以正常编译运行。2.执行语句cout<<12/5*2;屏幕上输出的运算结果是4。(√)解析:当参与算术运算的两个操作数全部为整型时,C++执行整数除法运算,整数除法会直接截断商的小数部分,仅保留整数部分。本题中12和5均为整型,12/5的运算结果是2,2*2得到最终结果4,因此输出内容为4,该描述正确。如果开发者误将12/5按照浮点数除法运算得到2.4,之后乘2得到4.8,误判结果为假,是非常典型的易错点。3.C++语言中定义变量的时候可以不明确指定变量的数据类型,编译器会自动根据变量的赋值内容推断出合适的数据类型。(×)解析:C++是强类型静态语言,所有变量在定义时必须明确声明其数据类型,C++11标准中新增的auto关键字虽然支持类型自动推导,但是已经超出GESP一级的考纲范围,一级考试的所有场景都要求变量必须明确指定数据类型,不存在无需指定类型的普通变量定义方式。4.if语句后面紧跟的小括号内部可以是任意合法的C++表达式,只要表达式的运算结果能够被判定为逻辑真或者逻辑假即可。(√)解析:C++中规定,表达式的运算结果数值如果为0则判定为逻辑假,所有非0的数值全部判定为逻辑真,因此if后的括号内不仅可以写关系表达式、逻辑表达式,也可以直接写普通的算术表达式、甚至单个变量,比如if(a)、if(3+2)这类写法都是完全合法的,该描述正确。5.while循环的循环体代码至少会被执行一次。(×)解析:while循环的执行规则是先判断循环条件是否成立,条件成立才会执行循环体内容,如果初始判断时循环条件就不成立,循环体将一次都不会执行,只有do-while循环是先执行一次循环体再判断条件,循环体至少执行一次,本题描述混淆了while和do-while的执行逻辑,因此错误。6.C++中的转义字符'\n'的功能是将光标移动到下一行的行首位置完成换行,该功能和cout语句中的endl操纵符的换行功能完全等价。(√)解析:'\n'是标准的换行转义字符,输出后直接触发换行操作,endl除了完成换行功能之外,还会强制刷新输出缓冲区,在一级考试的常规应用场景中,二者的换行显示效果完全一致,该描述符合C++语法规则。7.两个int类型的整数相加,最终得到的运算结果也一定属于int类型的合法表示范围,不会出现数值溢出的问题。(×)解析:int类型在内存中通常占用4个字节的存储空间,可以表示的有符号整数范围为-2147483648到2147483647,如果两个int类型的大整数相加,结果超过int的最大表示上限,就会触发数值溢出,溢出后的结果属于C++标准中定义的未定义行为,结果无法预测,因此该描述错误。8.在C++一级考纲要求的所有应用场景中,所有可以使用while循环实现的功能,都可以使用for循环来实现,二者可以完全互相转换。(√)解析:while循环和for循环都属于当型循环,执行逻辑都是先判断条件再执行循环体,所有while循环能实现的逻辑都可以改写为等价的for循环,不存在while循环能实现而for循环无法实现的场景,因此该描述正确。9.C++语言中严格区分标识符的大小写,变量名Sum和sum会被编译器识别为两个完全不同的独立变量,不会被判定为重复定义。(√)解析:C++的标识符大小写敏感是基础语法规则,字母大写和小写的编码值在ASCII表中完全不同,因此Sum和sum属于两个完全独立的合法变量名,不会被判定为重复定义,该描述正确。10.程序中定义int类型变量a,执行cin>>a;语句时,如果用户从键盘输入的内容是英文字母而非数字,程序会直接崩溃终止运行。(×)解析:当输入内容和变量类型不匹配时,cin对象会自动进入错误状态流,变量a会被自动赋值为未初始化的随机值,程序后续的输入输出逻辑会受到影响,但程序不会直接触发崩溃操作,仍然可以继续运行后续的代码,因此该描述错误。三、编程题(每题30分,共60分)1.题目名称:校园跑积分统计题目描述:某高校推行每日校园跑活动,月度积分规则如下:每累计完成1公里有效里程,即可兑换2个运动积分,不足1公里的小数部分不兑换积分。同时设置阶梯额外奖励规则:如果当月总有效里程超过10公里,额外发放5个积分的基础奖励;如果当月总有效里程超过20公里,除了基础5分奖励之外,再额外追加10分的高阶奖励,即超过20公里的用户总共可以获得15分的额外总奖励。现在输入用户当月累计的总有效里程,单位为公里,是一个最多包含一位小数的非负实数,保证输入数值不会超过100.0,请你编程计算并输出该用户当月可以获得的总运动积分。输入格式:一行,一个非负实数,表示当月总里程。输出格式:一行,一个整数,表示最终计算得到的总积分。样例输入1:3.2样例输出1:6样例输入2:10.0样例输出2:20样例输入3:11.7样例输出3:27样例输入4:26.8样例输出4:67解题思路:本题核心考点是强制类型转换的应用,为了避免浮点数精度判断引发的误差问题,首先将输入的浮点数里程强制转换为整型,自动截断小数部分得到整数公里数,之后按照基础积分规则计算总积分,再通过两个分支语句判断是否满足阶梯奖励条件,累加对应的奖励积分即可得到最终结果。参考代码:usingnamespacestd;intmain(){doubletotal_km;cin>>total_km;//强制转换得到整数公里数,自动舍去小数部分intkm=(int)total_km;intscore=km*2;if(km>20){score+=15;}elseif(km>10){score+=5;}cout<<score<<endl;return0;}常见错误点解析:部分考生容易把分支条件写反,错误先判断km>10再判断km>20,导致里程数超过20的用户只会获得5分的奖励,最终结果计算错误。还有部分考生错误使用浮点数直接比较total_km>20,当输入数值存在浮点数精度偏差时,会导致边界值判断错误,转成整数后再判断可以完全避免这类问题。测试用例覆盖说明:本题共设置5个得分测试点,分别覆盖里程小于等于10、里程大于10小于等于20、里程大于20、里程为0、里程刚好为20.0五类场景,所有边界值全部验证通过才能拿到满分。2.题目名称:两位幸运数统计题目描述:GESPC++一级学员小宇定义两位的正整数为幸运数,需要同时满足两个条件:条件一:该数字的十位上的数码和个位上的数码相加得到的和是奇数;条件二:该数字本身是3的倍数。现在给定两个两位正整数a和b,保证满足10<=a<=b<=99,请你编程统计出所有取值范围在[a,b]区间内(包含a和b两个端点)的幸运数的总个数。输入格式:一行,两个用空格分隔的两位正

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论