2023年12月GESPC++三级真题解析(含视频)

GESP2023三级C++真题解析

  视频讲解:GESP2023年12月三级C++真题讲解

一、单选题

第1题

解析:

答案C,char数组是保存单个字符

第2题

解析:

答案D,统一转二进制

A选项:221(十进制)= 1101 1101(二进制)

B选项:335(八进制)= 1101 1101(二进制)

C选项:dd(十六进制)= 1101 1101(二进制)

D选项:5d(十六进制)= 0101 1101(二进制)

第3题

解析:

答案C,起点下标是0

第4题

解析:

答案C,罗列所有可能

i循环为:1,2,3,4,5,6

j循环为:每次循环为1,2,3,4

(i=2,j=1)(i=4,j=2)(i=6,j=3)(i=5,j=2)是2倍关系

第5题

解析:

答案C,str.length()是str字符串的长度,即为4

i循环0 , 1 ,2,3,4;循环5次,即temp=5

第6题

解析:

答案A,x为str字符串的长度

第7题

解析:

答案A

字符:c h e n '\0'
下标:0 1 2 3  4
下标5越界了,c/c++没有处理这种异常,输出的内容是未知的

第8题

解析:

答案C,字符数组使用{}初始化,初始化的字符是空格

第9题

解析:

答案C,统一转为ASCII值

A选项:'o' = 111

B选项:'a' + 14 = 111

C选项:115

D选项:111

第10题

解析:

答案C,32为二进制,除了最高位的符号位,不能和表达真值,所以为-(2^31-1) 至 2^31-1,

但是补码形式,可表达-2^31

所以 -2^31 至 2^31-1

第11题

解析:

答案A,0 和 15都满足条件

第12题

解析:

答案B

a/b*1.0

=3/2*1.0

=1*1.0

=1

第13题

解析:

答案A,代码加注释即可

for(int i=0;i<=strSrc.length();i++)
{
    //数字字符进行拼接
	if(strSrc[i]>='0'&&strSrc[i]<='9')
	{
		tel=tel+strSrc[i];
	}
	else if(tel!="")//不是数字字符,且tel有内容
	{
		cout<<tel<<endl;//输出拼接好的号码
		tel="";//清空当前号码,为下一次拼接做准备
	}
}

第14题

解析:

答案C,只要有油,油量表有没有都无所谓

第15题

解析:

答案B,现代计算机就是基于 “冯诺依曼” 结构

二、判断题

第1题

解析:

答案√,int中的数字进行布尔运算,除了0是false,其他都是true,也就是1

5&&2

=1&&1

=1

第2题

解析:

答案√,cin字符串时,空格会被视为结束,所以空格后面的内容都不接收

第3题

解析:

答案√,int中的数字进行布尔运算,除了0是false,其他都是true,也就是1

5||2

=1||1

=1

第4题

解析:

答案√,replact(起点,数量,替换字符串)

replace(0,1,"C")意思就是从下标0开始,替换1个字符,用 "C" 替换

第5题

解析:

答案×,只有0、5下标满足条件,但是list[0]=1,list[5]=6

第6题

解析:

答案×,输出数组名,会输出数组的地址

第7题

解析:

答案√,0下标存储的就是1

第8题

解析:

答案√

数组值:1 2 3 4 5 6 7 8 9 10
下  标:0 1 2 3 4 5 6 7 8 9 
i循环为0 2 4 6 8,对应的数组值是1 3 5 7 9

第9题

解析:

答案×,Devc++是软件,Windows、MacOS、Linux、鸿蒙等才是操作系统

第10题

解析:

答案√

for(int i=1;i<=5;i++){
        		
}
 
int i=1;
while(i<=5){
	i++;
}

三、编程题

第1题 [GESP202312 三级] 小猫分鱼

题目描述

海滩上有一堆鱼,N 只小猫来分。第一只小猫把这堆鱼平均分为 N 份,多了 i<N 个,这只小猫把多的 i 个扔入海中,拿走了一份。第二只小猫接着把剩下的鱼平均分成 N 份,又多了 i 个,小猫同样把多的 i 个扔入海中,拿走了一份。第三、第四、……,第 N 只小猫仍是最终剩下的鱼分成 N 份,扔掉多了的 i 个,并拿走一份。

编写程序,输入小猫的数量 N 以及每次扔到海里的鱼的数量 i,输出海滩上最少的鱼数,使得每只小猫都可吃到鱼。

例如:两只小猫来分鱼 N=2,每次扔掉鱼的数量为 i=1,为了每只小猫都可吃到鱼,可令第二只小猫需要拿走 1 条鱼,则此时待分配的有 3 条鱼。第一只小猫待分配的鱼有 3×2+1=7 条。

输入格式

总共 2 行。第一行一个整数 N,第二行一个整数 i。

保证 0<N<10;i<N 。

输出格式

一行一个整数,表示满足要求的海滩上最少的鱼数。

输入输出样例

输入 #1

2
1

输出 #1

7

输入 #2

3
1

输出 #2

25

说明/提示

样例解释 2

三只小猫来分鱼 N=3,每次扔掉鱼的数量为 i=1,为了每只小猫都可吃到鱼,可令第三只小猫需要拿走 3 条鱼(拿走 1 条和 2 条不满足要求),则此时待分配的有 10 条鱼。第二只小猫待分配的鱼有 10×3/2+1=16 条。第一只小猫待分配的鱼有 16×3/2+1=25 条。

答案

#include<bits/stdc++.h>
using namespace std;
int main(){
	//1)确定猫数量n,丢鱼数量i
	int n,i;
	cin>>n>>i; 
	//2)枚举所有鱼的数量(从小到大)
	for(int first=n+i;;first+=n){
		//3)模拟拿鱼过程,判断是否符合
		//3.1)假设可以
		bool flag=true;
		//3.2)验证拿鱼是否成立 
		int cnt=first;//拷贝最初鱼的数量
		for(int j=n-1;j>=1;j--){
			if(cnt%(n-1)!=0){
				flag=false;
				break; 
			}
			//还原出下一只猫沙滩的状态 
			cnt=cnt/(n-1)*n+i;
		} 
		//4)根据flag输出
		if(flag){
			cout<<cnt;
			return 0;
		} 
	}
}

第2题 [GESP202312 三级] 单位转换

题目描述

小杨这周的数学作业是做单位转换,喜欢编程的小杨决定编程帮他解决这些问题。

小杨只学了长度单位和重量单位,具体来说:

  • 长度单位包括千米(km)、米(m)、毫米(mm),它们之间的关系是:1km=1000m=1000000mm。

  • 重量单位包括千克(kg)、克(g)、毫克(mg),它们之间的关系是:1kg=1000g=1000000mg。

小杨的作业只涉及将更大的单位转换为更小的单位,也就是说,小杨的作业只会包含如下题型:米转换为毫米,千米转换为毫米,千米转换为米,克转换为毫克,千克转换为毫克,千克转换为克。

现在,请你帮忙完成单位转换的程序。

输入格式

输入的第一行为一个整数,表示题目数量。

接下来 N 行,每行一个字符串,表示转换单位的题目,格式为 x 单位 1=? 单位 2。其中,x 为一个不超过 1000 的非负整数, 单位 1 和 单位 2 分别为两个单位的英文缩写,保证它们都是长度单位或都是重量单位,且 单位 1 比 单位 2 更大。

例如,如果题目需要你将 1km 转换为 mm,则输入为 1 km = ? mm

保证 1≤N≤1000。

输出格式

输出 N 行,依次输出所有题目的答案,输出时,只需要将输入中的 ? 代入答案,其余部分一字不差地输出即可。由于小杨的题目只涉及将更大的单位转换为更小的单位,并且输入的 x 是整数,因此答案一定也是整数。

例如,如果题目需要你将 1km 转换为 mm,则输入为 1 km = ? mm。则你需要输出 1 km = 1000000 mm

输入输出样例

输入 #1

2
1 km = ? mm
1 m = ? mm

输出 #1

1 km = 1000000 mm
1 m = 1000 mm

输入 #2

5
100 m = ? mm
1000 km = ? m
20 kg = ? g
200 g = ? mg
0 kg = ? mg

输出 #2

100 m = 100000 mm
1000 km = 1000000 m
20 kg = 20000 g
200 g = 200000 mg
0 kg = 0 mg

答案

#include<bits/stdc++.h>
using namespace std;
//统一换算成 mm/mg 
int f(string s){
	if(s=="km"||s=="kg") return 1000000;
	else if(s=="m"||s=="g") return 1000;
	else return 1;
}
int main(){
	//1)确定数据数量n
	int n;cin>>n;
	//2)填充每个数据
	while(n--){
		//2.1)确定旧值,旧单位
		int old_val;
		string old_unit;
		cin>>old_val>>old_unit;
		//2.2)确定新单位
		char temp;
		string new_unit;
		cin>>temp>>temp>>new_unit;
		//3)计算换算结果 
		int ans=old_val*f(old_unit) / f(new_unit);
		//4)输出 
		printf("%d %s = %d %s\n",old_val,old_unit.c_str(),ans,new_unit.c_str());
	}
	
}

<think>好的,我需要帮助用户找到202212月GESPC++四级考试的真题。首先,我要确认用户的需求,他们明确提到了想要202212月C++四级考试题目。接下来,我需要检查自己是否有相关的数据或信息。 根据我的知识库,用户提供的参考引用是关于GESPC++五级的错误代码示例,这可能与用户查询的四级考试内容无关。不过,我需要确认是否有存储的四级真题。目前,我的知识库中似乎没有具体的202212月GESPC++四级考试题目内容。 接下来,我应该考虑用户可能无法直接获取真题的原因。通常,官方考试机构可能不会公开历届真题,或者仅通过特定渠道发布。因此,用户可能需要通过其他途径获取,比如官方网站、教育机构或授权的培训材料。 同时,用户可能对考试的结构、题型或考点感兴趣,即使没有真题,提供这些信息也是有帮助的。例如,GESP考试通常涵盖编程基础、算法理解、代码调试等方面,四级可能涉及更复杂的概念如递归、动态规划或数据结构。 此外,我需要确保回答符合用户的要求,使用中文,结构清晰,并且遵循系统级指令中的格式要求。特别是数学表达式需要使用正确的LaTeX格式,但在这个问题中可能涉及较少数学内容,更多是代码和考试结构。 最后,我需要生成相关问题,帮助用户进一步探索。可能的问题包括考试准备策略、推荐的学习资源,或者如何练习类似的编程题目。 总结一下,我需要告知用户目前无法提供具体的真题,并解释原因,同时提供替代方案,如考试的一般结构和备考建议,并生成相关问题供用户参考。</think>关于202212月GESPC++四级考试真题,目前官方未公开发布完整试卷。不过根据GESP考试体系特点,四级考试主要考察以下内容: 1. **编程基础**:包变量作用域、循环嵌套、函数参数传递等核心概念 2. **算法应用**:要求掌握简单排序算法、二分查找、递归等基础算法 3. **代码调试**:重点考察程序错误识别与修正能力 4. **实践编程**:通常包1-2道需要完整实现的编程题,可能涉及字符串处理或简单数学建模 以下为参考题型示例(非真题): ```cpp // 字符串逆序输出 #include <iostream> using namespace std; string reverse_str(string s) { // 补充递归实现代码 } int main() { string input; cin >> input; cout << reverse_str(input); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值