视频讲解:GESP2026年6月一级C++真题讲解
一、单选题
第1题
解析:
答案C,传感器向计算机输入"湿度"信息
第2题
解析:
答案D,注释可以用输入法输入的所有字符
第3题
解析:
答案D,3+3.5是int+double,可以算出double6.5,a是float类型,可以存储6.5
第4题
解析:
答案C,只有C改变了计算顺序
-2*(2%4) =-2*2 =-4第5题
解析:
答案B,
int a=3;//a=3 b=? int b=a;//a=3 b=3 a=4;//a=4 b=3第6题
解析:
答案D,遇到不是数字字符,就停止存储了,所以只保存了2026
第7题
解析:
答案C,当M、N相等时,执行cout<<"B "<<(M-N)
第8题
解析:
答案C,=+ 不存在,复合赋值运算符是+=、-=、*=、/= 、%=
第9题
解析:
答案A,
一旦遇到11要,把num改变成5,所以用> 和 /= if(num>10) num/=2; 接下来只有A D选项 D选项 =+排除,没有这种运算符第10题
解析:
答案A,
continue后面的代码不会执行 i循环到5,才退出循环 所以cout<<i<<"END#"; 输出5END#第11题
解析:
答案B,
A选项,N为2循环不执行,不输出 B选项,N为15,i循环2 3 4 ...14 i为2时输出"0#" i为3时输出"1#",并break 即输出“0#1#” C选项,N为1,循环不执行,不输出 D选项,N为3,i循环2,输出“0#”第12题
解析:
答案A,
A选项,tot+=1 不是tot+=i B选项,i=tot=0,可以同时赋值 C选项,顺序不影响执行结果 D选项,顺序不影响执行结果第13题
解析:
答案B,
需要获取十位 n/10把十位变为个位 n/10%10再获取个位,就能获取十位第14题
解析:
答案B,
第1个空需要获取余数,即(start+n)%60 第2个空需要判断起始点,即pos==0第15题
解析:
答案B,
N必定能被N整除,无法正确判断二、判断题
第1题
解析:
答案√,wifi和蓝牙能链接考场之外的信息,造成不公平
第2题
解析:
答案√,
n/10%10,n/10将十位变成个位,n/10%10,获取个位,即获取十位 n%100/10,n%100保留十位个位,n%100/10,移除个位,即获取十位第3题
解析:
答案×,i循环为0 3 6 9 12 15 18,当i为21,不满足条件,退出循环
第4题
解析:
答案×,ret初始值为0,乘以任何数都为0
第5题
解析:
答案√,N%10获取当前个位,N/10去除当前个位,while(N>0)不为0才获取
第6题
解析:
答案√,转义字符效果一样
第7题
解析:
答案×,只有是整数就可以,例如负整数-2
第8题
解析:
答案×,n为循环为1 2 3 4,total*=n,即*1*2*3*4=24,但是total没设置初始值1
第9题
解析:
答案×,
a%2==0 结果为true,就是1 a/2结果为2 所以 (a%2==0)+a/2=1+2=3第10题
解析:
答案×,x循环为1 2 3 4,当x为2时 continue,不输出x,所以continue有作用
三、编程题
第1题 [GESP202606 一级] 去旅行
题目描述
快暑假了,小杨同学正在计划出去旅行,前往目的地的方案多种多样,小杨同学想知道如何前往目的地最便宜。
小杨同学住在 A 市,旅行目的地是 B 市,小杨同学前往目的地有三种方案:
- 从 A 市直飞 B 市;
- 从 A 市坐高铁到 C 市,然后坐飞机到 B 市;
- 从 A 市坐高铁到 C 市,然后坐高铁到 B 市。
请帮小杨同学求出最便宜的出行方案的价格。
输入格式
输入包含 4 行,每行一个正整数:
- 第 1 行的正整数表示「从 A 市直飞 B 市」的价格;
- 第 2 行的正整数表示「从 A 市坐高铁到 C 市」的价格;
- 第 3 行的正整数表示「从 C 市坐飞机到 B 市」的价格;
- 第 4 行的正整数表示「从 C 市坐高铁到 B 市」的价格。
输出格式
输出一个正整数,表示 3 种方式中,最便宜的出行方案的价格。
输入输出样例
输入 #1
999 105 699 588输出 #1
693输入 #2
9 3 8 7输出 #2
9说明/提示
样例解释 1
方案 1. 直飞价格为 999;
方案 2. 高铁转飞机价格为 105+699=804;
方案 3. 高铁的价格为 105+588=693;
因此最便宜的价格是 693。
样例解释 2
方案 1. 直飞价格为 9;
方案 2. 高铁转飞机价格为 3+8=11;
方案 3. 高铁的价格为 3+7=10;
因此最便宜的价格是 9。
数据范围
所有输入均为正整数,且不超过 10000。
答案
#include <bits/stdc++.h> using namespace std; int main() { //1)确定ab飞机 ac高铁 cb飞机 cb高铁 价格 int abf,acg,cbf,cbg; cin>>abf>>acg>>cbf>>cbg; //2)计算3个种价格 比较找大小 int minn=30000; //ab飞机 if(minn > abf) minn=abf; //ac高铁 + cb飞机 if(minn > acg+cbf) minn=acg+cbf; //ac高铁 + cb高铁 if(minn > acg+cbg) minn=acg+cbg; //3)输出结果 cout<<minn; return 0; }第2题 [GESP202606 一级] 交税
题目描述
根据国家税收相关规定,劳务报酬需要按月预交个税,预交税率如下:
- 劳务报酬不超过 800 的,不需要预交个税;
- 劳务报酬超过 800 的,仅超过 800 的部分按照 20%(即 0.2)税率预交个税(不超过 800 的部分不需要预交个税);
例如,月劳务报酬为 1000.0,则按照规则 2 需要预交个税 (1000.0−800.0)×20%=40.00。
现在给定小杨同学 12 个月的月度劳务报酬,请帮小杨同学计算他这 12 个月应预交个税的总和。
输入格式
输入 12 行,每行一个浮点数,表示小杨同学 12 个月中每个月的劳务报酬。
每个浮点数恰好有一位小数。
输出格式
输出 1 行,一个浮点数,保留两位小数,表示小杨同学 12 个月应预交个税的总和。
输入输出样例
输入 #1
932.0 1634.3 1790.4 2172.9 378.1 283.4 2761.9 3583.5 10.1 2324.9 1111.6 3812.3输出 #1
2584.76说明/提示
样例解释 1
- 932.0 符合规则 2,超过 800 的部分为 132.0,按照 20% 预交为 132.0×20%=26.40;
- 1634.3 符合规则 2,超过 800 的部分为 834.3,按照 20% 预交为 834.3×20%=166.86;
- 1790.4 符合规则 2,超过 800 的部分为 990.4,按照 20% 预交为 990.4×20%=198.08;
- 2172.9 符合规则 2,超过 800 的部分为 1372.9,按照 20% 预交为 1372.9×20%=274.58;
- 378.1 符合规则 1,不需要预交个税;
- 283.4 符合规则 1,不需要预交个税;
- 2761.9 符合规则 2,超过 800 的部分为 1961.9,按照 20% 预交为 1961.9×20%=392.38;
- 3583.5 符合规则 2,超过 800 的部分为 2783.5,按照 20% 预交为 2783.5×20%=556.70;
- 10.1 符合规则 1,不需要预交个税;
- 2324.9 符合规则 2,超过 800 的部分为 1524.9,按照 20% 预交为 1524.9×20%=304.98;
- 1111.6 符合规则 2,超过 800 的部分为 311.6,按照 20% 预交为 311.6×20%=62.32;
- 3812.3 符合规则 2,超过 800 的部分为 3012.3,按照 20% 预交为 3012.3×20%=602.46;
总和为 2584.76。
数据范围
小杨同学每月劳务报酬收入均为正,且恰好有一位小数,且不超过 4000.0。
答案
#include <bits/stdc++.h> using namespace std; int main() { double ans=0; //1)输入12个月的报酬 for(int i=1;i<=12;i++){ double t;cin>>t; //2)判断是否交税 if(t>800){ //3)累加超出部分 交税 ans+=(t-800)*0.2; } } //4)输出结果 cout<<fixed<<setprecision(2)<<ans; return 0; }