视频讲解:GESP2024年6月三级C++真题讲解

一、单选题

第1题

解析:

答案C

认证语言有C/C++、Python、Scratch

第2题

解析:

答案B,判断闰年口诀“  4闰  100不闰  400再闰 ”

第3题

解析:

答案C,32个字节,表达2的32次方,但是最高位表示符号位,需32-1

第4题

解析:

答案C

i++保证下一位 8进制数存储

decimal%8取出 当前余数

decimal/=8  更新 “被除数”

第5题

解析:

答案C

101(2)=5(10)

0.11(2)=0.75(10)

第6题

解析:

答案B

i循环为:0,1,2,3,4

i为1时,j循环1次;i为2时,j循环2次,每次循环 sum+1

总共循环10次,即sum=10

第7题

解析:

答案C

12(10)=1100(2)

右移两位,变 11(2),即十进制的3

第8题

解析:

答案C,就是在做a、b交换

a=a^b;  记录差异

b=a^b;  根据差异 获取原来的a

a=a^b;  根据差异 获取原来的b

第9题

解析:

答案C,长度为4,但是官方答案给了C

题目想表达应该是占有内存,因为字符串尾部有‘\0’终止符,所有占用内存为5

第10题

解析:

答案B,有人比max大,max才把它抢过来

第11题

解析:

答案A

count++ 表示数量+1

=i  表获取当前的数

第12题

解析:

答案C

0的ascii是:48
6的ascii是:48+6
2的ascii是:48+2
9的ascii是:48+9
结果为:48*4 + 6+2+9=209

第13题

解析:

答案B

+= 才能进行累加

arr[i] > 135 ?  1 : 0  表示:满足>135 返回1,否则返回0

第14题

解析:

答案D,输出字符串要用 双引号

第15题

解析:

答案A

模拟第一次
字符:g e s p . c f
下标:0 1 2 3 4 5 6
found=4
token= str.subsrt(0,4) 也就是起点为0,4个字符 ,即“gesp”
result+=token;  result+=" "; 即“gesp ”尾部加个空格
要想获取后半部分,起点下标是5
只有A选项符合

二、判断题

第1题

解析:

答案√,与语言无关,等级即对应能力

第2题

解析:

答案√

-6原码:1000 0000,0000 0110
-6反码:1111 1111,1111 1001
-6补码:1111 1111,1111 1010
十六进制:F     F     F     A

第3题

解析:

答案√,补码就是为了解决减法问题

第4题

解析:

答案×,字符‘0’ 是有ASCII值48的,‘\0’一无所有

第5题

解析:

答案×,数组就是连续存放的,链表才不是

第6题

解析:

答案×,不能直接对数组赋值

第7题

解析:

答案√,a为0至3时,最高位只能在2,a一旦超过3,最高位就超了,a|3就不可能==3了

第8题

解析:

答案×

b=01100,0开头表示八进制,b对应二进制是000 0010 0100 0000

a&b结果为0

第9题

解析:

答案√

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

(i+1)%3的结果分别为:2,0,1,2,0

而题目中的89781, 1%3的结果为1,最后一个不可能为1

第10题

解析:

答案√

//枚举所有4位数
for(int i=1000;i<=9999;i++){
    //获取左右两边
    a=i/100;
    b=i%100;
    //判断是否符合
    if(  (a+b)*(a+b)==i ){
        cout<<i;
    }
}

三、编程题

第1题 [GESP202406 三级] 移位

题目描述

小杨学习了加密技术移位,所有大写字母都向后按照⼀个固定数目进行偏移。偏移过程会将字母表视作首尾相接的环,例如,当偏移量是 3 的时候,大写字母 A 会替换成 D,大写字母 Z 会替换成 C,总体来看,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 会被替换成 DEFGHIJKLMNOPQRSTUVWXYZABC。

注:当偏移量是 26 的倍数时,每个大写字母经过偏移后会恰好回到原来的位置,即大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 经过偏移后会保持不变。

输入格式

第一行包含一个正整数 n。

输出格式

输出在偏移量为 n 的情况下,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 移位替换后的结果。

输入输出样例

输入 #1

3

输出 #1

DEFGHIJKLMNOPQRSTUVWXYZABC

说明/提示

【样例解释】

当偏移量是 3 的时候,大写字母 A 会替换成 D,大写字母 Z 会替换成 C,总体来看,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 会被替换成 DEFGHIJKLMNOPQRSTUVWXYZABC。

【数据范围】

对于全部数据,保证有 1≤n≤100。

答案

#include <bits/stdc++.h>
using namespace std;
int main() {
	//1)确定偏移量n
	int n;
	cin>>n;
	//2)循环"A"至"Z"
	for(int i=0;i<=25;i++){
		//3)计算出”实际偏移量“
		int true_num='A'+i -'A' +n;
		//4)输出加密后(’A‘+实际偏移量%26)
		cout<<char('A'+true_num%26);
	}
	
	
}

第2题  [GESP202406 三级] 寻找倍数

题目描述

小杨有一个包含 n 个正整数的序列 A=[a1​,a2​,…,an​],他想知道是否存在 i(1≤i≤n) 使得 ai​ 是序列 A 中所有数的倍数。

输入格式

第一行包含一个正整数 t,代表测试用例组数。

接下来是 t 组测试用例。对于每组测试用例,一共两行。

其中,第一行包含一个正整数 n;第二行包含 n 个正整数,代表序列 A。

输出格式

对于每组测试用例,如果存在 i(1≤i≤n) ,满足对于所有 k(1≤k≤n) ai​ 是 ak​ 的倍数,输出 Yes,否则输出 No

输入输出样例

输入 #1

2
3
1 2 4
5
1 2 3 4 5

输出 #1

Yes
No

说明/提示

【样例解释】

对于第⼀组数据,对于 a3​=4,满足 a3​ 是 a1​ 和 a2​ 的倍数。

【数据范围】

对于全部数据,保证有 1≤t≤10,1≤n≤10^{5},1≤ai​≤10^{9}

答案

#include <bits/stdc++.h>
using namespace std;
int main() {
	//1)确定序列数量t
	int t;cin>>t;
	//2)填充每个序列
	for(int i=1;i<=t;i++){
		//2.1)确定序列的长度
		int n;cin>>n;
		//2.2)填充当前序列的每个元素
		int arr[100010]={};
		int maxx=INT_MIN;
		for(int j=1;j<=n;j++){
			cin>>arr[j];
			//3)填充的同时找最大值
			if(maxx<arr[j]) maxx=arr[j];
		}
		//4)验证该该最大值是否所有元素的倍数
		//4.1)假设符合
		bool flag=true;
		//4.2)验证是否符合 
		for(int j=1;j<=n;j++){
			if(maxx%arr[j]!=0){
				flag=false;
				break;
			}
		}
		//5)根据flag判断
		if(flag) cout<<"Yes"<<endl;
		else  cout<<"No"<<endl;
	}
}

Logo

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

更多推荐