版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年3月GESP编程能力等级认证C++三级真题(含答案和解析)一、单选题(每题2分,共30分)。1.如果字符变量_1的值是字符1,那么(int)_1的值是?()。A.1B.-1C.49D.+1或者-1答案:C。解析:字符'1'在C++中以ASCII码存储,其对应ASCII码为49。(int)属于强制类型转换,将字符型转整型时,提取的是字符的ASCII码数值,而非字符表示的数字1。字符'0'ASCII码为48,数字字符依次递增,因此字符'1'转整型结果固定为49,本题核心区分字符常量与数值常量的存储差异。2.题a,b是整型变量,各自有互不相同的初始值。下列程序实现了什么效果()。a=a^b;b=a^b;a=a^b;A.a,b的值从始至终都没有改变。B.a,b的值实现了互换。C.a,b的值互换了以后,又还回去了,相当于没有变化。D.a,b的值最后和原值不一样,没有任何意义。答案:B。解析:本题考查按位异或(^)交换变量的经典用法,异或满足a^b^b=a、a^b^a=b的核心性质。第一步a=a^b存储两者异或结果;第二步b=a^b等价于b=(a^b)^b,即b=a,b被赋值为原a;第三步a=a^b等价于a=(a^b)^a,即a=b,a被赋值为原b。全程无需临时变量即可完成两数互换,是位运算的应用。3.关于下列正确的程序段,说法正确的是()。charstr1[]="Hello";charstr2[]={'H','e','l','l','0'};A.字符数组str1和str2完全相同。B.这段程序将输出不同的结果。C.字符数组str1和str2不相等。D.这两个赋值方式完全相同。答案:C。解析:字符串常量赋值的str1会自动在末尾添加结束符'\0',实际存储6个字符;逐个字符赋值的str2仅存储5个指定字符,无结束符。两者内存结构、长度均不同,因此不相等。cout输出字符串依赖'\0'判断结束,输出str2会越界读乱码,但并非每次输出不同,两种赋值方式底层逻辑有本质区别。4.关于以下程序段,说法正确的是()。intx=10;cout<<(x++)+(++x)<<endl;A.C++11标准中,这是未定义行为,不同的环境有可能出现不同的结果。B.22C.21D.20答案:A。解析:同一表达式中对同一变量x进行多次自增修改,且无分隔,属于C++11标准明确的未定义行为。编译器无固定计算顺序,不同环境、优化模式下结果可能为21、22或其他数值,无法得到固定答案。5.题8位二进制下,十进制数-15的补码是()。A.11110000B.10001111C.10010000D.11110001答案:D。解析:8位有符号数负数补码计算规则:原码符号位不变,数值位按位取反得反码,反码加1得补码。-15原码为10001111,反码为11110000,反码加1后得到补码11110001。6.三进制数转换成十进制是()。A.63B.65C.67D.69答案:B。解析:本题为三进制转十进制按权展开计算,对应三进制数为2102,计算式为2×3³+1×3²+0×3¹+2×3⁰=2×27+1×9+0+2=65。7.二进制数10110101是某数的8位补码,该数的十进制是()。A.-73B.-75C.-77D.75答案:B。解析:8位补码最高位为1表示负数,负数补码转原码:符号位不变,其余位取反后加1。补码10110101取反得11001010,加1为原码11001011,数值位转换为十进制75,符号位为负,最终结果-75。8.已知unsignedcharc=0x0F;(十六进制0F=二进制00001111),执行c=c<<3;后,c的十进制值是()。A.64B.72C.80D.120答案:D。解析:0x0F对应十进制15,<<是按位左移运算符,无符号数左移n位等价于乘以2ⁿ,左移3位即15×8=120。无符号字符型左移时高位丢弃、低位补0,无溢出异常。9.补码的情况下,关于按位取反运算,用笔计算的情况下,以下说法错误的是()。A.~5的结果是-6(int类型,32位)。B.~0的结果是0(int类型,32位)。C.~(-3)的结果是2(int类型,32位)。D.~8的结果是-9(int类型,32位)。答案:B。解析:32位int按位取反(~)是对所有二进制位取反,0的32位补码全为0,取反后全为1,对应十进制-1,因此B选项错误。~5=-6、~(-3)=2、~8=-9均符合按位取反计算结果。10.执行以下C++代码后,sub的值是()。stringstr="GESP2026";stringsub=str.substr(4,2);A.20B.02C.2026D.026答案:A。解析:string的substr(pos,len)函数,第一个参数是起始索引(从0开始),第二个参数是截取长度。"GESP2026"索引4为'2'、索引5为'0',截取2个字符结果为"20"。11.执行以下代码后,输出结果是:()。intarr[]={5,10,15,20,25,30};intcount=sizeof(arr)/sizeof(arr[0]);cout<<count;A.4B.6C.24D.30答案:B。解析:sizeof(arr)计算数组总字节数,sizeof(arr[0])计算单元素字节数,两者相除得到数组元素个数。数组含6个int元素,int占4字节,总字节24,24/4=6。12.执行以下代码后,输出结果是:()。chars[10]="abcde";inta=sizeof(s)/sizeof(s[0]);intb=strlen(s);cout<<a-b;A.4B.5C.6D.10答案:B。解析:sizeof(s)计算数组定义的固定大小10,strlen(s)计算字符串有效长度(到'\0'为止)为5,10-5=5。13.以下问题中,最不适合用枚举法解决的是()。A.找出1~100之间所有能被7整除的数B.找出100~200之间的所有质数C.计算1+2+3+…+1000的和D.找出三位数中个位、十位、百位数字之和等于10的数。答案:C。解析:枚举法是将所有可能的情况一个一个列出来,逐个判断是否符合条件。计算1到1000的和是循环累加。除C选项外其余选项均需逐一验证,适合枚举法。14.用枚举法解决“鸡兔同笼问题:头共35个,脚共94只,求鸡和兔的数量”,以下枚举逻辑最合理的是()。A.枚举鸡的数量x(0~35),兔的数量y=35-x,判断2*x+4*y==94。B.枚举兔的数量y(0~94),鸡的数量x=35-y,判断2*x+4*y==94。C.枚举所有整数x(0-100)和y(0-100),判断x+y==35&&2*x+4*y==94。D.枚举脚的总数sum(0~94),判断sum==94。答案:A。解析:头总数固定35,兔数量可由鸡数量直接推导,枚举鸡的范围0~35最小、计算量最少。B枚举范围不合理,C枚举范围也是不合理,D逻辑错误无法求解。枚举法核心是缩小范围,减少无效计算。15.模拟“字符串加密”:规则为“每个字符ASCII码+3,若超过z(122)则从a重新开始”,以下代码中正确的条件判断是()。for(inti=0;i<str.length();i++){//需补充条件。_______________________else{str[i]+=3;}}A.if(str[i]>122)str[i]=str[i]+3-26;B.if(str[i]>122)str[i]=str[i]-26;C.if(str[i]+3>122)str[i]=str[i]-23;D.if(str[i]+3>'z')str[i]='a'+(str[i]+3-'z')-1;答案:C。解析:本题考查字符循环加密的精准运算逻辑,加密核心是字符ASCII码+3后若超出'z'则从'a'重新开始。选项C仅做减26处理,未严格匹配“从a重新开始”的循环规则,会出现字符偏移偏差。选项D先判断str[i]+3是否大于'z',再通过'a'+(str[i]+3-'z')-1计算,符合“超z则从a起始”要求,是唯一符合题目规则的正确写法。二、判断题(每题2分,共20分)。16.定义intarr[5]={1,2,3};则arr[3]的值为0,arr[5]是合法下标。()。答案:错误。解析:数组未初始化元素默认赋值为0,arr[3]=0正确;数组下标从0开始,长度5的合法下标为0~4。17.定义doublearr[10];未手动初始化时,数组中所有元素的默认值为0.0。()。答案:错误。解析:局部数组未手动初始化时,元素为随机值,仅全局数组或静态数组未初始化时,元素才默认初始化为0.0。题目未说明作用域,因此说法错误。18.定义intarr[]={1,2,3};则sizeof(arr)的结果为12(int占4字节)。()。答案:正确。解析:数组含3个int元素,int占4字节,总内存=3×4=12,sizeof(arr)计算数组总字节数,结果为12,符合C++数组内存分配规则,是sizeof运算符的基础用法。19.下面的流程图是用来求1+2+3+…+10的和。请判断:这个流程图的逻辑正确还是错误?()。答案:正确。解析:该流程图存在初始值、循环条件和累加步骤中无错误,正确计算1到10的累加和。标准初始化累加器为0、循环变量为1,循环至10结束并累加,本题流程图遵循该逻辑。20.下面流程图的功能是计算5对2取余数,输出结果为1。()。答案:正确。解析:5除以2商2余1,取余运算结果为1,流程图逻辑是去除a中完整的b,直至a<b,结果正确,无逻辑错误。21.已知大写字符A的ASCII编码的十六进制表示为0x41,计算字符m的ASCII编码的八进制表示为155(八进制)。()。答案:正确。解析:0x41对应十进制65(大写A),小写m的ASCII十进制为77。77转换为八进制:77÷8=9余5,9÷8=1余1,结果为155,进制转换结果正确,符合ASCII码与进制转换规则。22.在C++位运算中,各种不同的运算符有优先级的区分,使用括号能够解决优先级的问题。()。答案:正确。解析:C++位运算(~大于<<、>>大于&大于^大于|)有固定优先级,优先级混乱会导致结果错误。括号可强制改变运算顺序。23.由于在0~255范围内,char类型和int类型可以互换,因此在这里x和y相等。()。charx='1';inty=1;答案:错误。解析:charx='1'存储ASCII码49,inty=1存储数值1,两者数值不同,不相等。即使范围重叠,字符型与整型的存储值不同,不能直接判定相等,本题混淆字符ASCII码与数值的差异。24.在C++语言中,表达式((0xf0+0x15)==255)的值为true。()。答案:错误。解析:0xf0=240,0x15=21,240+21=261,261≠255,表达式结果为false。该说法不成立。25.如果a为int类型的变量,且a的二进制最低位为0,则表达式((a&3&1)==0)的值为true。()。答案:正确。解析:最低位为0表示a是偶数,a&1结果为0;3二进制11,1二进制01,连续与运算后结果仍为0,等式成立,表达式值为true,位运算逻辑判断正确。三、编程题(每题25分,共50分)。26.试题名称:二进制回文串。时间限制:1.0s。内存限制:512.0MB。题目描述:对于一个正整数n,我们将其转换为不含前导零的二进制表示,如果这个二进制序列从左向右读与从右向左读完全相同,则称该数为二进制回文数。例如,9的二进制表示为(1001)2,是二进制回文数;12的二进制表示为(1100)2,不是二进制回文数。你的任务是:给定一个正整数n,计算在1到n的范围内二进制回文数的数量。输入格式:输入一行,包含一个正整数n。输出格式:输出一行,包含一个数,表示在1到n的范围内二进制回文数的数量。输入样例。输出样例。样例解释:样例1中,1到15范围内1、3、5、7、9、15是二进制回文数。数据范围:1≤n≤105。参考程序。#include<iostream>usingnamespacestd;intmain(){intn,a[50]={0},ans=0;cin>>n;for(inti=1;i<=n;i++){intt=i,pos=0;while(t){a[pos++]=t%2;t/=2;}boolok=true;for(inti=0;i<pos;i++)if(a[i]!=a[pos-i-1]){ok=false;break;}ans+=ok;}cout<<ans;return0;}解析:程序采用枚举+回文判断思路,遍历1到n所有数,将数字对2取余得到二进制位存入数组,也就是转成二进制后的结果存入数组,对比数组首尾对称位置(j和pos-j-1前后对应),全部相等则为回文数,否则不是回文数,ans变量累加0或者1,最终ans为统计好的答案。27.试题名称:凯撒密码。时间限制:1.0s。内存限制:512.0MB。题目描述:凯撒密码是一种替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B被替换成E,C被替换成F,以此类推,W被替换成Z,X被替换成A,Y被替换成B,Z被替换成C。这个加密方法是以罗马共和时期凯撒的名字命名的,据称当年凯撒曾用此方法与其将军们进行联系。但是和所有的利用字母表进行替换的加密技术一样,凯撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。现在给你一个已破解的凯撒密码明文与密文,与一个有相同偏移量的未破解凯撒密码密文,请你帮忙破解它。输入格式:输入共三行。第一行包含一个字符串,表示已破解的凯撒密码明文。第二行包含一个字符串,表示已破解的凯撒密码密文。第三行包含一个字符串,表示待破解的凯撒密码密文。输出格式:输出一行,包含一个字符串,表示待破解的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江西省丰城市高二化学下册期末考试模拟考试卷及完整答案【典优】
- 2026年湖北省广水市高二化学下册期末考试模拟卷及答案(考点梳理)
- 2026年吉林省龙井市高二化学下册期末考试模拟考试卷及参考答案【A卷】
- 2026年云南省蒙自市高二化学下册期末考试模拟测试卷附参考答案【突破训练】
- 2026年江苏省靖江市高二化学下册期末考试模拟测试卷及完整答案(各地真题)
- 2026年湖北省宜都市高二化学下册期末考试模拟检测卷含答案【培优A卷】
- 护理实践中的疼痛管理
- 材料验收标准变更商洽函(4篇)
- 家庭办公设备使用手册预案
- 科学应对传染病构筑健康堡垒小学主题班会课件
- 焊接技术的应用与发展
- 2025年广东省中考地理试题卷(含标准答案及解析)
- 2025年《数字孪生与虚拟调试技术应用》课程标准
- 黑龙江龙东历年中考作文题与审题指导(2014-2023)
- 2025中考数学最后一课及考前指导【课件】
- T/CNESA 1003-2020电力储能系统用电池连接电缆
- 2025榆林能源集团有限公司招聘工作人员(473人)笔试参考题库附带答案详解
- 以诺书999中英对照
- 四诊在护理中的应用
- 急性心衰的急救与护理
- 2024年江苏省南京市中考物理试卷真题(含答案)
评论
0/150
提交评论