2024年12月GESP认证C++等级考试二级真题(含答案和解析-在末尾)_第1页
2024年12月GESP认证C++等级考试二级真题(含答案和解析-在末尾)_第2页
2024年12月GESP认证C++等级考试二级真题(含答案和解析-在末尾)_第3页
2024年12月GESP认证C++等级考试二级真题(含答案和解析-在末尾)_第4页
2024年12月GESP认证C++等级考试二级真题(含答案和解析-在末尾)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

2024年12月GESP认证C++等级考试二级真题(含答案和解析-在末尾)一、单选题(每题2分,共30分)。1.题2024年10月8日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德(JohnJ.Hopfield)和杰弗里·辛顿(GeoffreyE.Hinton)。这两位科学家的主要研究方向是()。A.天体物理B.流体力学C.人工智能D.量子理论2.计算机系统中存储的基本单位用B来表示,它代表的是(),比如某个照片大小为3MB。A.ByteB.BlockC.BulkD.Bit3.题C++语句cout<<(3+3%3*2-1)执行后输出的值是()。A.-1B.4C.56D.24.下面C++代码执行后其输出是()。for(inti=0;i<10;i++)printf("%d",i);A.123456789B.0123456789C.12345678910D.0123456789105.下面C++代码的相关说法中,正确的是()。inttnt;for(inti=0;i<10;i++)tnt+=i;cout<<tnt;A.上述代码执行后其输出相当于求1-10的和(包含10)B.上述代码执行后其输出相当于求1-10的和(不包含10)C.上述代码执行后其输出相当于求0-10的和(不包含10)D.上述代码执行后将输出不确定的值6.下面C++代码执行后输出是()。inti;for(i=1;i<10;i++)if(i%2)continue;elsebreak;cout<<i;A.1B.2C.9D.107.下面C++代码执行后的输出是()。for(i=0;i<10;i++){if(i%3)continue;printf("0#");}if(i>=10)printf("1#");A.0#0#0#0#0#0#0#1#B.0#0#0#0#0#0#1#C.0#0#0#0#1#D.0#0#0#0#8.下面C++代码用于输出0-100之前(包含100)能被7整除但不能被3整除的数,横线处不能填入的代码是()。for(i=0;i<100;i++)if(_____________)cout<<i<<endl;A.i%7==0&&i%3!=0B.!(i%7)&&i%3!=0C.i%7&&i%3D.i%7==0&&!(i%3==0)9.下面C++代码用于求正整数各位数字之和,横线处不应填入代码是()。inttnt,N;printf("请输入正整数:");cin>>N;tnt=0;while(N!=0){________________N/=10;}cout<<tnt;A.tnt=tnt+N%10B.tnt+=N%10C.tnt=N%10+tntD.tnt=N%1010.下图的C++程序执行后的输出是()。for(i=0;i<5;i++)for(j=0;j<i;j++)cout<<j;A.0010120123B.01012012301234C.001012012301234D.0101201230123401234511.下面C++代码用于实现图示的九九乘法表。相关说法错误的是()。for(intHang=1;Hang<10;Hang++){for(intLie=1;Lie<Hang+1;Lie++){if(Lie*Hang>9)printf("%d*%d=%d",Lie,Hang,Lie*Hang);elseprintf("%d*%d=%d",Lie,Hang,Lie*Hang);//L2。}printf("\n");//L1。}A.将L1注释的printf(“\n”)移到L2注释所在行,效果相同。B.将L1注释的printf(“\n”)修改为print(“%c”,‘\n’)效果相同。C.将Lie*Hang>9修改为Lie*Hang>=10效果相同D.将Lie*Hang>9修改为Hang*Lie>9效果相同12.在数学中N!表示N的阶乘,即1到N的乘积,如3!=123。下面的C++用于求1-N的阶乘之和,如N为3,则是1!+2!+3!。下面代码段补充选项后用于实现上述功能,其中不能实现阶乘和的选项是()。intN;cin>>N;inttnt=0,nowNum=1;//tnt保存求和之值,当前N的阶乘。for(inti=1;i<N+1;i++){______________//基于上一个计算出当前数的阶乘。______________//从1到i每个数阶乘之和。}cout<<tnt;A.nowNum*=i;tnt+=nowNum;B.nowNum=nowNum*i;tnt=tnt+nowNum;C.nowNum*=i;tnt=nowNum+tnt;D.nowNum=nowNum+i;tnt*=nowNum;13.下面C++代码用于输出N和M之间(可以包括N和M)的孪生素数。孪生素数是指间隔为2的两个数均为素数,如11和13分别是素数,且间隔为2。isPrime(N)用于判断N是否为素数的函数。为完成上述功能,横线处应填上的代码是()。intN,M;//本题假设N小于M。cin>>N>>M;for(inti=N;i<__________;i++)if(isPrime(i)&&isPrime(i+2))printf("%d%d\n",i,i+2);A.M-2B.M-1C.MD.M+114.下面C++代码实现输出如下图形,横线应填入的代码是()。intheight;cout<<"高度:";//获取用户输入的高度。cin>>height;for(i=0;i<height;i++){//打印每行前面的空格。for(j=0;j<_______________;j++)cout<<"";//打印每行的星号。for(k=0;k<_______________;k++)cout<<"*";//输出一行后,换行。cout<<endl;}A.height-i和2*iB.height和2*iC.height-i和2*i+1D.height-i-1和2*i+115.下面C++代码执行后的输出是30,则横线处不能填入()。inta=10,b=20,c=30;cout<<_____________________<<endl;cout<<endl;A.max(max(a,b),c)B.min(a+b,c)C.sqrt(a+b+c)D.(a+b+c)/2二、判断题(每题2分,共20分)。16.在Windows的资源管理器中为已有文件A建立副本的操作是Ctrl+C,然后Ctrl+V。()。A.正确B.错误17.在C++代码中,假设N为正整数,则cout<<(N-N/10*10)将获得N的个位数。()。A.正确B.错误18.在C++语句cout<<(10<=N<=12)中,假设N为12,则其输出为1。()。A.正确B.错误19.如果C++表达式int(sqrt(N))*int(sqrt(N))==N的值为True,则说明N为完全平方数,如4、9、25等。()。A.正确B.错误20.下面C++代码执行后将输出2*3=6。()。inta=2,b=3;printf("%%a*%%b=%d",a*b);A.正确B.错误21.以下C++代码因为循环变量为将导致错误,即不能作为变量名称,不符合C++变量命名规范。()。for(int_=0;_<10;_++)continue;A.正确B.错误22.下面C++代码执行后因为有break,将输出0。()。inti;for(i=0;i<10;i++){continue;break;}cout<<i;A.正确B.错误23.下面的C++代码执行后将输出18行“OK”。()。inti,j;for(i=8;i>2;i-=2)for(j=0;j<i;j++)printf("OK\n");A.正确B.错误24.将下面C++代码中的i=1调整为i=0的输出结果相同。()。inti;intcnt=0;for(i=1;i<5;i++)if(i%2)cnt+=1;cout<<cnt;A.正确B.错误25.下面两段C++代码都是用于求1-10的和,其运行结果相同。通常说来,for循环都可以用while循环实现。()。//循环1。inttnt;inti;tnt=0;for(i=1;i<10+1;i++)tnt+=i;cout<<tnt<<endl;//循环2。inttnt;inti;tnt=0;i=1;while(i<=10){tnt+=i;i+=1;}cout<<tnt<<endl;A.正确B.错误三、编程题(每题25分,共50分)。26.寻找数字。时间限制:1.0s。内存限制:512.0MB。题面描述:小杨有一个正整数a,小杨想知道是否存在一个正整数b满足a=b4。输入格式:第一行包含一个正整数t,代表测试数据组数。对于每组测试数据,第一行包含一个正整数代表a。输出格式:对于每组测试数据,如果存在满足条件的正整数b,则输出b,否则输出−1。对于全部数据,保证有1≤t≤105,1≤a≤108。27.数位和。时间限制:1.0s。内存限制:512.0MB。题面描述:小杨有n个正整数,小杨想知道这些正整数的数位和中最大值是多少。“数位和”指的是一个数字中所有数位的和。例如:对于数字12345,它的各个数位分别是1,2,3,4,5。将这些数位相加,得到:1+2+3+4+5=15。因此,12345的数位和是15。输入格式:第一行包含一个正整数n,代表正整数个数。之后n行,每行包含一个正整数。输出格式:输出这些正整数的数位和的最大值。对于全部数据,保证有1≤n≤105,每个正整数不超过1012。答案解析如下。1.答案:C。解析:寻找和计算机相关性最大一项。2.答案:A。解析:计算机B即表示Byte(字节参照)。1B=8bit。bit(比特)是计算机中信息传输的基本单位,代表二进制中的0或1‌,是最小的信息单位。而‌byte(字节)是数据存储的基本单位,由8个相邻的bit组成‌,可以表示256种不同的状态。3.答案:D。解析:优先级%*>+-,按照优先级计算3%3=00*2=03+0-1=2最后结果为2。4.答案:B。解析:for循环,i=0;i<10;循环范围从0到9,输出结果为0123456789。5.答案:D。解析:在C++中,在函数体内定义的局部内置类型变量值随机,在int变量初始值未定的情况下后续的值也会有不确定性。6.答案:B。解析:第3行for循环从1到9进行判断。第4行条件i%2,判断i/2的余数,余数为0表示可以整除2,则此时的i是2的倍数,当i%2==1(i为奇数)时条件成立,continue表示跳过此次执行,其他情况下,i为偶数时,break表示终止这个for循环。循环1到9中,第一次执行1跳过,第二次执行2,终止循环,此时i为2,输出为2。7.答案:C。解析:第2行条件i%3,判断i/3的余数,余数为0表示i是3的倍数或者为特殊情况0,在0到9的循环过程中,0,3,6,9满足条件,此时输出4遍0#,其他情况continue都跳过循环。i为9时仍满足条件,此时需要i再次加1,不满足条件后循环结束,此时i的值为10,满足第6行条件判断,再输出1#。8.答案:C。解析:条件要求,能被7整除,说明i对7取余结果为0,i是7的倍数,表示为i%7==0,或者i%7!=0不成立,!(i%7);不能被3整除,说明i对3取余结果不为0,表示为i%3!=0,或者i%3==0不成立!(i%3==0),综上,只有选项C不满足题目要求。9.答案:D。解析:数位拆分,拆分最后一位通常用%10来计算,计算完成后/10去掉最后一位继续判断下一位。根据题目要求,求各个位数之和,需要再%10过程中不断进行累加,只有D选项不满足条件。10.答案:A。解析:双重for循环,外层循环为i,i从0到4进行循环,内层循环为j,j从0到i-1进行循环。第一次i=0;j不满足条件,无输出。第二次i=1;j=0满足条件,输出0。第三次i=2,j=0满足条件,输出0。第四次i=2;j=1满足条件,输出1。第五次i=3;j=0满足条件,输出0。第六次i=3;j=1满足条件,输出1。第七次i=3;j=2满足条件,输出2。第八次i=4;j=0满足条件,输出0。第九次i=4;j=1满足条件,输出1。第十次i=4;j=2满足条件,输出2。第十一次i=4;j=3满足条件,输出3。循环结束,输出为0010120123。11.答案:A。解析:A选项,L1移到L2会出现一行还没有运算完,只运行了一次,就换行的情况。B选项,printf("\n")和printf("%c",'\n')都表示输出一个换行符,效果相同,可以互相替换。C选项,>9和>=10意义相同,可以互相替换。D选项,条件判断a*b>9和b*a>9含义相同,可以互相替换。12.答案:D。解析:计算1-N的阶乘之和分为两步,第一步计算1到N之间每一个数nowNum本身的阶乘,借鉴题目给出的样例3!=1*2*3数据nowNum和i之间的关系是*=累乘,第二步将阶乘加起来,计算和,此时的关系是+=累加,由此判断ABC都符合要求,D选项不成立。13.答案:B。解析:注意题目给出的关系,孪生素数需要间隔为2的两个数都满足是素数的条件,在进行for循环范围取值时,需要确定i和i+2都在范围内,此时确保i+2<=M或者i+2<M+1,变形得到i<=M-2或者i<M-1;。14.答案:D。解析:观察图案发现,第一行有4个空格,1个*,第二行有3个空格,3个*,第三行有2个空格,5个*。找到规律,会发现第i的空格数量是n-i,*号数量是2*i-1。但是注意题目,i从第0行开始计算,所以变量i需要在上面的公式基础上+1。空格数量是n-(i+1)=n-i-1,*号数量是2*(i+1)-1=2*i+1,选择D选项。15.答案:C。解析:注意题目给的值a=10,b=20,c=30,带入选项计算,A选项max(a,b)=20,max(20,c)=30;B选项a+b=30,min(30,c)=30;C选项a+b+c=60,sqrt(60)=7.74;D选项a+b+c=60,60/2=30;只有C选项不符合题目。16.答案:正确。解析:Ctrl+C复制文件和文本,Ctrl+V粘贴文件和文本。17.答案:正确。解析:N/10*10可以看做是重置个位,保留其他位的值,这样得到的差值就是个位的值。可以带入样例N=597,N/10*10=590,相减得到7。18.答案:正确。解析:拆分条件(10<=N)<=12,N为12的时候10<=N成立,值为1,1<=12,条件判断仍成立,值为1。19.答案:正确。解析:若一个数是一个整数的平方,则称这个数是完全平方数。注意sqrt()函数得到的数据类型是小数,此时如果转int类型相乘能=N,说明中间没有误差√N*√N=N且√N为整数,满足定义。20.答案:X。解析:运行上述代码输出的是%a*%b=6;%%a和%%b表示错误,如果想正确表示应该为printf("%d*%d=%d",a,b,a*b);。21.答案:X。解析:可以将符号作为变量定义,此代码不会运行错误。22.答案:X。解析:运行for循环会先执行continue,导致后面的break无法运行,十次循环结束后i的值为10,输出的值为10。23.答案:正确。解析:外层循环会在8,6,4时运行三次,此时内层的次数是8+6+4=18次,符合题意。24.答案:正确。解析:条件i%2成立说明i是奇数,

温馨提示

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

评论

0/150

提交评论