版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年12月GESP编程能力认证C++等级考试四级真题(含答案)一、单选题(每题2分,共30分)。1.小杨想让指针p指向整数变量x,正确写法是()。A.intp=&x;B.int*p=x;C.int*p=&x;D.p=*x;答案:C。2.小杨写了如下的指针接力程序,程序执行完后变量a、*p1和*p2的值分别是()。inta=5;int*p1=&a;int*p2=p1;*p2=10;A.51010B.51015C.101010D.5510答案:C。3.小杨用一个二维数组表示棋盘,其中1表示有棋子,0表示没有棋子。他想知道第2行第3列有没有棋子,可采用的代码是()。inta[3][4]={{1,0,1,0},{0,1,0,1},{1,1,0,0}};A.cout<<a[1,2]<<endl;B.cout<<a[1][2]<<endl;C.cout<<a(1,2)<<endl;D.cout<<a{1}{2}<<endl;答案:B。4.执行完下面的代码后,*(p+5)和arr[1][1]的值分别是()。intarr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};int*p=&arr[0][0];A.56B.65C.55D.66答案:D。5.执行完下面的代码后,sum的值是()。intarr[2][3][2]={{{1,2},{3,4},{5,6}},{{7,8},{9,10},{11,12}}};intsum=0;for(inti=0;i<2;i++)for(intj=0;j<3;j++)for(intk=0;k<2;k++)if((i+j+k)%2==0)sum+=arr[i][j][k];A.36B.39C.78D.30答案:B。6.执行完下面的代码后,输出是()。inta=1;voidtest(){inta=2;{inta=3;a++;}a++;cout<<a<<"";}intmain(){test();cout<<a;return0;}A.31B.41C.32D.42答案:A。7.执行完下面的代码后,a、b和c的值分别是()。voidbyValue(intx){x=100;}voidbyRef(int&x){x=200;}voidbyPointer(int*x){*x=300;}intmain(){inta=1,b=2,c=3;byValue(a);byRef(b);byPointer(&c);return0;}A.100200300B.123C.1200300D.12300答案:C。8.运行如下代码会输出()。structPoint{intx,y;};structRectangle{PointtopLeft;PointbottomRight;};intmain(){Rectanglerect={{10,10},{20,20}};rect.topLeft.x=5;Point*p=&rect.bottomRight;p->y=5;cout<<rect.topLeft.x+rect.bottomRight.y;return0;}A.10B.30C.15D.20答案:A。9.给定函数climbStairs(intn)的定义如下,则climbStairs(5)的返回的值是()。intclimbStairs(intn){if(n<=2)returnn;inta=1,b=2;for(inti=3;i<=n;i++){inttemp=a+b;a=b;b=temp;}returnb;}A.5B.8C.13D.10答案:B。10.对如下4个扑克牌进行排序,使用某排序算法按value排序后,结果为:{3,'D'},{3,'B'},{5,'A'},{5,'C'},则这个排序算法是稳定的吗?()。structCard{intvalue;charsuit;//花色。};Cardcards[4]={{5,'A'},{3,'B'},{5,'C'},{3,'D'}};A.稳定,因为相同value的元素相对顺序保持不变。B.不稳定,因为{3,'D'}出现在{3,'B'}之前。C.无法判断D.稳定,因为结果是有序的。答案:B。11.下面的函数selectTopK()实现从n个学生中选出前k名成绩最好的学生颁发奖学金(不需要对所有学生完全排序,只需要找出前k名),则横线上应填写()。structStudent{stringname;intscore;};voidselectTopK(Studentstudents[],intn,intk){for(inti=0;i<k;i++){intmaxIdx=i;for(____________________){//在此处填入代码。if(students[j].score>students[maxIdx].score){maxIdx=j;}}if(maxIdx!=i){Studenttemp=students[i];students[i]=students[maxIdx];students[maxIdx]=temp;}}}A.intj=0;j<n;j++B.intj=i+1;j<n;j++C.intj=i;j<n;j++D.intj=1;j<=n;j++答案:B。12.某游戏的排行榜系统需要实时更新玩家分数。每次只有一个玩家的分数发生变化,排行榜已经是按分数降序排列的。现在需要将更新后的玩家调整到正确位置。下面的函数updateRanking()要实现上述功能,则两处横线上应分别填写()。structPlayer{stringname;intscore;};//玩家索引playerIdx的分数刚刚更新,需要调整位置。voidupdateRanking(Playerplayers[],intsize,intplayerIdx){PlayerupdatedPlayer=players[playerIdx];if(playerIdx>0&&updatedPlayer.score>players[playerIdx-1].score){inti=playerIdx;while(____________________){//在此处填入代码。players[i]=players[i-1];i--;}players[i]=updatedPlayer;}elseif(playerIdx<size-1&&updatedPlayer.score<players[playerIdx+1].score){inti=playerIdx;while(____________________){//在此处填入代码。players[i]=players[i+1];i++;}players[i]=updatedPlayer;}}A.i>0&&updatedPlayer.score>players[i-1].scorei<size-1&&updatedPlayer.score<players[i+1].scoreB.i<size-1&&updatedPlayer.score<players[i+1].scorei>0&&updatedPlayer.score>players[i-1].scoreC.i>0&&updatedPlayer.score<players[i-1].scorei<size-1&&updatedPlayer.score<players[i+1].scoreD.i>0&&updatedPlayer.score<players[i-1].scorei<size-1&&updatedPlayer.score>players[i+1].score答案:A。13.给定如下算法,其时间复杂度为()。boolf(intarr[],intn,inttarget){for(inti=0;i<n;i++){intsum=0;for(intj=0;j<n;j++){if(i&(1<<j)){sum+=arr[j];}}if(sum==target)returntrue;}returnfalse;}A.O(n)B.O(n2)C.O(n3)D.O(2n)答案:B。14.执行下面C++程序,会输出()。intmain(){ofstreamfout("test.txt");fout<<"Happy"<<endl;fout<<"NewYear";fout.close();ifstreamfin("test.txt");strings1,s2;fin>>s1;getline(fin,s2);fin.close();cout<<s1<<"|"<<s2;return0;}A.Happy|NewYearB.Happy|NewYearC.HappyNewYear|D.Happy|答案:D。15.执行下面C++代码,会输出()。intdivide(inta,intb){if(b==0)throw"Divisionbyzero";returna/b;}intmain(){intresult=0;try{result=divide(10,0);cout<<"A";}catch(constchar*msg){cout<<"B";result=-1;}cout<<result;return0;}A.A0B.B-1C.A10D.程序崩溃答案:B。二、判断题(每题2分,共20分)。16.小杨正在调试他的温度传感器程序,其中变量x保存当前温度。下面这段代码运行后,变量x的值变成了8。()。intx=5;int*p=&x;3*p=*p+3;答案:正确。17.一个结构体不能包含另一个结构体。()。答案:错误。18.在C++中,定义如下二维数组:inta[3][4];数组a在内存中是按行优先连续存放的,即a[0][0]、a[0][1]、a[0][2]、a[0][3]在内存中是连续的。()。答案:正确。19.执行下面程序后,变量a的值会变成15。()。voidadd(int&x){x+=10;}inta=5;add(a);答案:正确。20.执行下面的C++代码,会输出8,因为两个指针地址相差8个字节(假设int占4字节)。()。intarr[5]={1,2,3,4,5};int*p1=arr;int*p2=arr+2;cout<<p2-p1;//输出结果。答案:错误。21.考虑用如下递推方式计算斐波那契数列,时间复杂度是O(n)。()。intn=10;intf[20];f[0]=0;f[1]=1;for(inti=2;i<=n;i++)f[i]=f[i-1]+f[i-2];答案:正确。22.冒泡排序和插入排序都是稳定排序算法。()。答案:正确。23.下面这段代码实现了选择排序算法。()。voidsort(inta[],intn){for(inti=1;i<n;i++){intx=a[i];intj=i-1;while(j>=0&&a[j]>x){a[j+1]=a[j];j--;}a[j+1]=x;}}答案:错误。24.下面代码可以正常编译并输出10。()。#include<iostream>usingnamespacestd;intcalculate(intx,inty=10);intmain(){cout<<calculate(5);//调用1。return0;}intcalculate(intx,inty){returnx*y;}intcalculate(intx){//重载函数。returnx*2;}答案:错误。25.执行下面代码会输出100。()。intmain(){ofstreamfout("data.txt");fout<<10<<""<<20<<endl;fout<<30<<""<<40;fout.close();ifstreamfin("data.txt");inta,b,c,d;fin>>a>>b>>c>>d;fin.close();cout<<a+b+c+d;return0;}答案:正确。三、编程题(每题25分,共50分)。26.试题名称:建造。时间限制:1.0s。内存限制:512.0MB。题目描述:小A有一张M行N列的地形图,其中第i行第j列的数字aij代表坐标(i,j)的海拔高度。停机坪为一个3×3的区域且内部所有9个点的最大高度和最小高度之差不超过H。小A想请你计算出,在所有适合建造停机坪的区域中,区域内部9个点海拔之和最大是多少。输入格式:第一行三个正整数M,N,H,含义如题面所示。之后M行,第i行包含N个整数ai1,ai2…aiN,代表坐标(i,j)的高度。数据保证总存在一个适合建造停机坪的区域。输出格式:输出一行,代表最大的海拔之和。数据范围:对于所有测试点,保证1≤M,N≤103,1≤H,aij≤105。参考程序。#include<iostream>usingnamespacestd;inta[1010][1010];intmain(){intM,N,H;cin>>M>>N>>H;for(inti=1;i<=M;++i){for(intj=1;j<=N;++j){cin>>a[i][j];}}intmax_sum=0;for(inti=1;i<=M-2;++i){for(intj=1;j<=N-2;++j){intlocal_max=a[i][j],local_min=a[i][j],local_sum=0;for(intx=0;x<3;++x){for(inty=0;y<3;++y){intheight=a[i+x][j+y];local_sum+=height;if(height>local_max)local_max=height;if(height<local_min)local_min=height;}}if(local_max-local_min<=H){if(local_sum>max_sum){max_sum=local_sum;}}}}cout<<max_sum;return0;}27.试题名称:优先购买。时间限制:1.0s。内存限制:512.0MB。题目描述:小A有M元预算。商店有N个商品,每个商品有商品名S、价格P和优先级V三种属性,其中V为正整数,且V越小代表商品的优先级越高。小A的购物策略为。(1)总是优先买优先级最高的东西。(2)如果有多个最高优先级商品,购买价格最低的。(3)如果有多个优先级最高且价格最低的商品,购买商品名字典序最小的。小A想知道能购买哪些商品。输入格式:第一行两个正整数M,N,代表预算和商品数。之后N行,每行一个商品,依次为SiPiVi,代表第i个商品的商品名、价格、优先级。数据保证不存在两个名字相同的商品。输出格式:按照字典序从小到大的顺序,输出所有购买商品的商品名。数据范围:对于所有测试点,保证1≤|Si|≤10,1≤Mi,Pi≤105,1≤N≤103,1≤Vi≤10。商品名仅由小写字母组成且不存在两个相同的商品名。参考程序。#include<iostream>#include<algorithm>#include<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自媒体策划活动方案(3篇)
- 茶叶商标活动策划方案(3篇)
- 论坛平台活动方案策划(3篇)
- 猕猴桃种质资源收集保存与种质创新可行性研究报告
- 外汇期货就业前景分析
- 2026七年级语文人教版上册语文园地四书写提示
- 2026年中国高性能PI薄膜行业市场规模及投资前景预测分析报告
- 2026年中国高强混合机行业市场规模及投资前景预测分析报告
- 产品召回行业指南
- 口腔健康与职业医学
- 早读课件 2024-2025学年统编版语文八年级下册
- 公司债可行性研究报告
- 专科护理标杆科室建设要点
- JG/T 118-2018建筑隔震橡胶支座
- T/CCMA 0164-2023工程机械电气线路布局规范
- TCPQSXF006-2023消防水带产品维护更换及售后服务
- 2024年中国科学技术大学少年创新班数学试题真题(答案详解)
- 担保公司担保业务责任追究制度
- LightTools优化模块用户指南
- 2025年钳工(技师)职业技能鉴定理论考试题库(含答案)
- 玉米转基因技术及其安全性
评论
0/150
提交评论