2025年06月GESPC++二级真题解析(含视频)

视频讲解:GESP2025年6月二级C++真题讲解

一、单选题

第1题

解析:

答案C,传感器是向计算机发送数据,所以是输入设备

第2题

解析:

答案,内存条代表内部存储器,即RAM

第3题

解析:

答案C,a*=b 带入得 3*=3.5,结果为10.5,因a为int,所以最终结果为10

第4题

解析:

答案A,n%1000去除百位以上的数,n/100去除百位以下的数

第5题

解析:

答案D,

执行第一行,b为28

执行第二行,a、b不变

执行第三行,a变为28

最终输出28 28

第6题

解析:

答案D,起始星期是星期六,需"n+6",超过7的部分去掉,需%7,即" (n+6)%7 "

第7题

解析:

答案C,i循环为1 2 3 4 5 6 7 8 9,其中i为2时break,所以只累加了1、2,结果为3

第8题

解析:

答案C,

最后输出i*j,只需判断判断i,j最后的值,即从i=11开始,

i为11时j循环1 2 3 4 5 6 7 8 9 10,j为1时,i*j%2==1 条件满足,所以循环退出时j为1

i循环到12才退出循环,最终i*j=1*12=12

第9题

解析:

答案B,i循环为-99 ,-97,...,99,总共循环100次

第10题

解析:

答案A,i循环为1 2 3 4 5 6 7 9

i为1时,if(i%3!=0)满足,输出" A# "

i为2时,if(i%3!=0)满足,输出" A# "

i为3时,if(i%3!=0)不满足,退出循环

i为3时退出循环,if(i==10)不满足

最终结果" A#A# "

第11题

解析:

答案D,i循环为0 1 2,

i为0时,j不循环

i为1时,j循环0,即输出" 1#0- "

i为2时,j循环0 1, 即输出" 2#0- " 和 " 2#1- "

最后输出"END"

最后输出" 1#0-2#0-2#1-END "

第12题

解析:

答案D,!(i%3)不能表达"不能被3整除"

(i%3)表示"除以3有余数"为true,即"不能被3整除"

!(i%3)取反则表达"能被3整除"

第13题

解析:

答案D,n>0表示当前还有位数,n/=10表示去除当前位数

第14题

解析:

答案D,会导致无限循环

第15题

解析:

答案A,A选项移动会导致每行只输出1个数字

二、判断题

第1题

解析:

答案√,手机、电脑、手表都带有通信功能

第2题

解析:

答案√,

假设n为9,n/10结果:0,即"n/10舍去个位,若n<10,值为0" 正确

假设n为123,n/10结果:12,即"n>10,舍去个位后的数" 正确

第3题

解析:

答案×,2、3行不改变a、b的值,cout输出括号内最后一个值,即b的值20

第4题

解析:

答案√,两个数,最大、最小值相同,则证明两个数相等

第5题

解析:

答案×,a=45.6会获取整数45对应ASCII字符 '-'

第6题

解析:

答案×,if(59.99<60)满足,应输出" 不及格 "

第7题

解析:

答案×,i为10时,跳出循环,输出"END",continue不影响

第8题

解析:

答案×,i循环为0 1 2 3 4,,sum+=i为10

第9题

解析:

答案√×,

(int i=5;i>1;i--) i循环为 5 4 3 2 ,结果为5+4+3+2

(int i=1;i<5;i++) i循环为1 2 3 4,结果为1+2+3+4

第10题

解析:

答案√,

n为奇数时,(j==N/2)可判断正中间列

n为偶数时,(j==N/2)可判断 正中间列 ,(j==(N-1)/2)可判断正中间列

三、编程题

第1题 [GESP202506 二级] 数三角形

题目描述

直角三角形有两条直角边与一条斜边,设两条直角边的长度分别为 a,b,则直角三角形的面积为 ​。

请你计算当直角边长 a,b 均取不超过 n 的正整数时,有多少个不同的面积为整数的直角三角形。直角边长分别为 a,b 和 a′,b′ 的两个直角三角形相同,当且仅当 a=a′, b=b′ 或者 a=b′, b=a′。

输入格式

一行,一个整数 n,表示直角边长的最大值。

输出格式

输出一行,一个整数,表示不同的直角三角形数量。

输入输出样例

输入 #1

复制代码
3

输出 #1

复制代码
3

输入 #2

复制代码
5

输出 #2

复制代码
9

说明/提示

对于所有测试点,保证 1≤n≤1000。

答案

cpp 复制代码
#include<iostream>
using namespace std;
int main(){
	//1)确定最长n
	int n;
	cin>>n;
	//2)枚举所有情况
	int ans=0;
	//2.1)枚举a的所有情况
	for(int a=1;a<=n;a++){
		//2.2)枚举b的所有情况
		for(int b=a;b<=n;b++){
			//3)判断面积为整数
			if( a*b/2.0 == a*b/2 ){
				ans++;
			}
		} 
	} 
	//4)输出结果
	cout<<ans; 
}

第2题 [GESP202506 二级] 幂和数

题目描述

对于正整数 n,如果 n 可以表为两个 2 的次幂之和,即 n=+(x,y 均为非负整数),那么称 n为幂和数。

给定正整数 l,r,请你求出满足 l≤n≤r 的整数 n 中有多少个幂和数。

输入格式

一行,两个正整数 l,r,含义如上。

输出格式

输出一行,一个整数,表示 l,r 之间幂和数的数量。

输入输出样例

输入 #1

复制代码
2 8

输出 #1

复制代码
6

输入 #2

复制代码
10 100

输出 #2

复制代码
20

说明/提示

对于所有测试点,保证 1 ≤ l ≤ r ≤

答案

cpp 复制代码
#include<iostream>
#include<math.h>
using namespace std;
int main(){
	//1)确定范围l r
	int l,r;
	cin>>l>>r;
	//2)循环范围
	int ans=0;
	for(int n=l;n<=r;n++){
		//3)判断n是否为"幂和数"
		//3.1)假设不可以
		bool flag=false; 
		//3.2)枚举所有x y情况
		for(int x=0;pow(2,x)-1<=n&&!flag;x++){
			for(int y=0;pow(2,y)+pow(2,x)<=n&&!flag;y++){
				if(pow(2,y)+pow(2,x)==n){
					flag=true;
					break;
				}
			} 
		} 
		//3.3)根据flag判断
		if(flag) ans++; 
	} 
	//4)输出结果
	cout<<ans; 
}