2024年12月GESPC++四级真题解析(含视频)
array[0][0]与array[1][1]距离4个单位,int类型占4个字节,所以加16个字节,即0x7ffee4065820+16=0x7ffee4065830。,p_arr+=1,使数组起点地址后移一个单位,p_arr起点变为原来的下标1,所以输出p_arr[0],会输出原来p_arr[1]的值,即0.5。,第一对气泡4,1做交换,变为{1,4,3,1,5,2},第二对气泡4,3做交换,变
视频讲解:GESP2024年12月四级C++真题讲解_哔哩哔哩_bilibili
一、单选题
第1题

解析:
A:正确
B:函数没有设置返回类型
C:返回类型void错误,应该为float
D:没有正确返回结果,应为x*x
第2题

解析:
A:times值不变,函数无法影响实参,函数传递的值是拷贝的
B:正确
C:n是形参,times是实参
D:函数传递值需按顺序,一一对应
第3题

解析:
答案B,函数引用传递,会影响传递的实参,所以结果为10
第4题

解析:
答案B,p_arr+=1,使数组起点地址后移一个单位,p_arr起点变为原来的下标1,所以输出p_arr[0],会输出原来p_arr[1]的值,即0.5
第5题

解析:
答案D,因指针p指向x变量,所有改变p,等价于改变x,所以p、x都改变为22
第6题

解析:
答案D,使用new关键字,需指针
第7题

解析:
答案D,array[0][0]与array[1][1]距离4个单位,int类型占4个字节,所以加16个字节,即0x7ffee4065820+16=0x7ffee4065830
第8题

解析:
答案D,多维数组省略大小,需初始化数据
第9题

解析:
答案A,BC选项不应该为+=,result后移时的过度;D选项f2变量原值丢失
第10题

解析:
答案C,冒泡排序最忧的情况下,时间复杂度为O(n)
第11题

解析:
答案B,第一对气泡4,1做交换,变为{1,4,3,1,5,2},第二对气泡4,3做交换,变为{1,3,4,1,5,2},锁定B选项
第12题

解析:
答案B,函数嵌套函数,通常时间复杂度为O(n²)
第13题

解析:
答案A,插入排序从第2位开始,需要和前面每一位比较,起点为上一位,所以j=i-j;当前位需作比较,所以base=nums[i]
第14题

解析:
答案C,ofstream方式,需用outFile<<"..."<<endl,才可输入到txt文档内
第15题

解析:
答案B,函数hmean内抛出错误runtime_error,所以由第15行接收
二、判断题
第1题
int* ptr;
*ptr = 10;
答案:❌
解析:
应为 int* ptr=&a; 初始化指针需要赋值变量的地址
第2题
答案:❌
解析:
可以先声明,后定义,如下
#include<iostream>
using namespace std;
int add(int a,int b);
int main(){
cout<<add(1,2);
}
int add(int a,int b){
return a+b;
}
第3题
答案:❌
解析:
值传递不可改变变量的值

第4题
答案:❌
解析:
多维数组的只有第一维度大小可省略

第5题
答案:✔
解析:
这就是递推算法的解题思维
第6题
答案:✔
解析:
函数嵌套函数,通常时间复杂度都为O(n²)
第7题
答案:✔
解析:
最坏的情况O(n²) (逆序排列);最优的情况O(n) (已经排好序的数组,优化版冒泡排序)
第8题
答案:✔
解析:
不稳定的排序有:选择、快排、希尔、堆,其余都为稳定排序
第9题
答案:❌
解析:
不稳定的排序有:选择、快排、希尔、堆,其余都为稳定排序
第10题
答案:❌
解析:
可以函数调用函数

三、编程题
第1题 [GESP202412 四级] Recamán
答案
#include<iostream>
#include<algorithm>
using namespace std;
bool vis[1000000000];
int main(){
//1)确定数量
int n;
cin>>n;
//2)循环遍历,填充数列
int a[3010]={};
for(int k=1;k<=n;k++){
//2.1)检测a(k-1)-k,需是正整数且没出现过
if(a[k-1]-k>0&&!vis[a[k-1]-k]){
a[k]=a[k-1]-k;
}else{//否则赋值为a[k-1]+k
a[k]=a[k-1]+k;
}
//2.2)标记为出现
vis[a[k]]=true;
}
//3)排序(升序)
sort(a+1,a+n+1);
//4)输出数列
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}
第2题 [GESP202412 四级] 字符排序
答案
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
//1)数量有多少组数据t
int t;
cin>>t;
//2)填充每组数据
for(int i=1;i<=t;i++){
//2.1)确定字符串数量n;
int n;
cin>>n;
//2.2)填充每个字符串
string s[110];
for(int j=1;j<=n;j++){
cin>>s[j];
}
//2.3)根据首字母排序
sort(s+1,s+n+1);
//2.4)拼接字符串
string last_s="";
for(int j=1;j<=n;j++) last_s+=s[j];
//2.5)检验字符串(满足从小到大的关系)
bool flag=true;//假设可以
for(int j=1;j<last_s.length();j++){
if(last_s[j-1]>last_s[j]){//前>后
flag=false;
break;
}
}
//2.6)根据flag输出
if(flag) cout<<1<<'\n';
else cout<<0<<'\n';
}
}
更多推荐





所有评论(0)