视频讲解:GESP2025年3月三级C++真题讲解

一、单选题

第1题

解析:

答案D

string s="012345679"
10字符以长度3分开
012   345  678   9
长度不足,用"="补充
012   345  678   9==
每个3字节变4字节,4*4=16字节

第2题

解析:

答案B

A选项:0xC0 0x80
转为二进制  1100 0000 ,1000 0000
符合UTF-8“二字节规则”110x xxxx 10xx xxxx,但是动态位都为0,不符合UTF-8压缩初衷

B选项:0xF0 0x90 0x80 0x80
转为二进制  1111 0000 ,1001 0000 ,1000 0000,1000 0000
符合UTF-8“四字节规则”1111 0xxx,10xx xxxx,10xx xxxx,10xx xxxx,且动态位不都为0

C选项:0x80 0x80 0x80
转为二进制  1000 0000 ,1000 0000 ,1000 0000
不符合UTF-8“三字节规则”1110 xxxx,10xx xxxx,10xx xxxx

C选项:0xFF 0xFE 0xFD
转为二进制  1111 1111 ,1111 1110 ,1111 1101
不符合UTF-8“三字节规则”1110 xxxx,10xx xxxx,10xx xxxx

第3题

解析:

答案A

-5(八进制)  =  -5(十进制)  =  1000 0101(二进制)

第4题

解析:

答案A

第1步)111转二进制
111%2=1
55%2=1
27%2=1
13%2=1
6%2=0
3%2=1
1%2=1
整数二进制为:110 1111
第2步)0.111转二进制
0.111*2=0.222  获取整数0
0.222*2=0.444  获取整数0
0.444*2=0.888  获取整数0
0.888*2=1.776   获取整数1
0.776*2=1.552   获取整数1
0.552*2=1.104   获取整数1
...
小数二进制位:0001 11???


第5题

解析:

答案B,二进制只能进行加法运算,有了补码可实现加法 模拟 “减法”

第6题

解析:

答案A,1000 0000 表示-128补码,0111 1111表示127补码

第7题

解析:

答案C

5的原码
0000 0000,0000 0000,0000 0000,0000 0101

int 存储-5,以32位补码的形式
1111 1111,1111 1111,1111 1111,1111 1011

unsigned无符号存储-5
2^(32)-5=4294967296−5=4294967291

第8题

解析:

答案A,oct(八进制输出),dec(十进制输出),hex(十六进制输出)

第9题

解析:

答案C,hex代表输出十六进制

第10题

解析:

答案D

进制的前缀表达方式:

0b(二进制),0(八进制),0x(十六进制)

^表示按位异或运算

第11题

解析:

答案D

maxIndex初始值为0,表示“假设索引0是最大值”,所以需要和后面一一比较,找出最大值索引

即  arr[i] > arr[maxIndex]

第12题

解析:

答案D

横行处想表达:偶数时,right就后移,且不和left冲突

第13题

解析:

答案B,replace(起点,数量,替换的字符串)

第14题

解析:

答案D

str.insert(5,"World");   //字符串改变str="HelloWorldc++"
str.substr(5,5);  //从下标5开始,获取5个字符,即  "World"

第15题

解析:

答案C,a%9==0  表达“9的倍数”  , a%8!=0  表达 “不是8的倍数”

二、判断题

第1题

解析:

答案×,“只有”太绝对了,例如条件 a<=b&&b<=c  && a + b >c ,也可以判断三角形

第2题

解析:

答案√,x为奇数时,x&1的结果为1;x为偶数时,x&1的结果为0

第3题

解析:

答案√,记住口诀“  4闰  100不闰   400再闰 ”

第4题

解析:

答案√,最小公倍数即可判断同时整除

第5题

解析:

答案√

就是二进制表达的原理
例如4为同学
a  b  c  d
1  1  0  1
----------
1表示参加,0表示不参加,即能表达16种

第6题

解析:

答案√,(2025)10 转为二进制  (111 1110 1001),共有8个1,确实偶数

第7题

解析:

答案√,n/2求商  , n%2求余数,n/=2不停地除以2

第8题

解析:

答案√,验算结果如下

10(10)+11(10)=21(10)
21转13进制
21/13=1...8
8/13=0..1
即18

第9题

解析:

答案×,表述有错,k进制不再有百位的概念,应“第3权位值为k²”

第10题

解析:

答案×,计算结果不同

19^{2}+C×19^{1}+F×19^{0}=12×361+12×19+15×1=4332+228+15=4575

13^{3}+1×13^{2}+A×13^{1}+C×13^{0}=2×2197+1×169+10×13+12×1=4394+169+130+12=4705

三、编程题

第1题 [GESP202503 三级] 2025

题目描述

小 A 有一个整数 x,他想找到最小的正整数 y 使得下式成立:

(x and y)+(x or y)=2025

其中 and 表示二进制按位与运算,or 表示二进制按位或运算。如果不存在满足条件的 y,则输出 −1。

输入格式

一行,一个整数 x。

输出格式

一行,一个整数,若满足条件的 y 存在则输出 y,否则输出 −1。

输入输出样例

输入 #1

1025

输出 #1

1000

说明/提示

对于所有测试点,保证 0≤x<2025。

(x and y)+(x or y)=2025

其中:

  • and 表示按位与运算,运算符为 &。
  • or 表示按位或运算,运算符为 ∣。

答案

#include<iostream>
using namespace std;
int main(){
	//1)确定x
	int x;
	cin>>x;
	// (x&y)+(x|y) 等价于  x+y 
	//2)得出y
	cout<<2025-x; 
}

第2题 [GESP202503 三级] 词频统计

题目描述

在文本处理中,统计单词出现的频率是一个常见的任务。现在,给定 n 个单词,你需要找出其中出现次数最多的单词。在本题中,忽略单词中字母的大小写(即 AppleappleAPPLEaPPle 等均视为同一个单词)。

请你编写一个程序,输入 n 个单词,输出其中出现次数最多的单词。

输入格式

第一行,一个整数 n,表示单词的个数;

接下来 n 行,每行包含一个单词,单词由大小写英文字母组成。

输入保证,出现次数最多的单词只会有一个。

输出格式

输出一行,包含出现次数最多的单词(输出单词为小写形式)。

输入输出样例

输入 #1

6
Apple
banana
apple
Orange
banana
apple

输出 #1

apple

说明/提示

对于所有测试点,1≤n≤100,每个单词的长度不超过 30,且仅由大小写字母组成。

答案

#include<iostream>
#include<map>
using namespace std;
int main(){
	//1)确定单词数量n
	int n;
	cin>>n;
	//2)填充每个单词s
	map<string,int> dict;
	int maxx=0;
	string ans_s="";
	for(int i=1;i<=n;i++){
		string s;
		cin>>s;
		//3)当前s单词全部转为小写
		for(int j=0;j<s.size();j++){
			if(s[j]>='A'&&s[j]<='Z'){
				s[j]+=32;
			}
		}
		//4) s单词出现次数+1
		dict[s]++;
		//5)比较找出最大值
		if(dict[s]>maxx){
			maxx= dict[s];
			ans_s=s; 
		} 
	}
	//6)输出结果 
	cout<<ans_s; 
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐