视频讲解:GESP2023年12月二级C++真题讲解
一、单选题
第1题
解析:
答案C,变量命不能以数字开头
第2题
解析:
答案A,题目代码循环10、12、14、16、18,只有A符合
第3题
解析:
答案D,0不能作为除数,所以i的起点是1,即int i=1;因子要包括本身,所以i<N+1
第4题
解析:
答案D,N=N/10改变了N变量,影响到后面的判断
第5题
解析:
答案D,带入N=7,无法正确判断质数
第6题
解析:
答案A,
i循环为:1,2,3
i为1时:j不循环
i为2时:j循环1
i为3时:j循环1,2
只有i(2)j(1)、i(3)j(2)符合i*j%2==0,所以输出"2#3#0"
第7题
解析:
答案D,将i、j的所有情况列举出来,其中i为2、4、6、8时,符合条件,即cnt=4;又因为i=10时才跳出循环,所以输出"4#"
i循环 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
j循环 | 无 | 1 | 1 | 1,3 | 1,3 | 1,3,5 | 1,3,5 | 1,3,5,7 | 1,3,5,7 |
第8题
解析:
答案C,
最初N=100,不是奇数,不能被3整除,所以-=20,下一次N=80
N=80,不是奇数,不能被3整除,所以-=20,下一次N=60
N=60,能被3整除,所以-=5,下一次N=55
N=55,是奇数,所以退出循环,最终结果为55
第9题
解析:
答案D,
x=1,不能被3整除,所以输出"1,",x+=2,下一次x=3
x=3,能被3整除,/10为0,所以x+=5,还有x+=2,下一次x=10
x=10,不能被3整除,所以输出"10,",只有D选项符合
第10题
解析:
答案B,罗列i、j的所有情况,总共循环10次,所以cnt+=1执行10次,cnt=10
i | 0 | 1 | 2 | 3 | 4 |
j | 无 | 0 | 0,1 | 0,1,2 | 0,1,2,3 |
第11题
解析:
答案C,获取根号,且保证根号是整数
第12题
解析:
答案D,缺的是换行,且要在输出完当前行所有列,再输出换行
第13题
解析:
答案C,“选路”功能,油量表不是必须,就是没有油量表,有油,车子就能动
第14题
解析:
答案B,计算机5大结构,就是冯诺依曼结构
第15题
解析:
答案B,i=2,会忽略1,需要判断i-1
二、判断题
第1题
解析:
答案√,-7/3=-3.5,因为都是int类型,所以结果-3
第2题
解析:
答案×,字符‘9’做四则运算,会用字符对应的ASCII值
2*int(‘9’)*2
=2*57*2
=228
第3题
解析:
答案√,
3+2&&5-5
=5&&0
=true&&false
=false
第4题
解析:
答案×,srand(0)是保证每次生成随机数的序列相同,但是序列中的数不一定相同
第5题
解析:
答案×,会自动转化为逻辑值,不会语法错误,1转为true
第6题
解析:
答案×,i循环-500至499,-500无法抵消,输出的值应为-500
第7题
解析:
答案×,不同类型做运算,会隐式转换,不需要手动转化
第8题
解析:
答案√,例如int a='A';就是把字符‘A’的ASCII值65给变量
第9题
解析:
答案×,devC++是应用软件,操作系统是windows、Linux、MacOs
第10题
解析:
答案√,手写一个对比查看即可
//1)while
int i=1;
while(i<=5){
i++;
}
//2)for
for(int i=1;i<=5;i++){}
三、编程题
第1题 [GESP202312 二级] 小杨做题
题目描述
为了准备考试,小杨每天都要做题。第 1 天,小杨做了 a 道题;第 2 天,小杨做了 b 道题;从第 3 天起,小杨每天做的题目数量是前两天的总和。
此外,小杨还规定,当自己某一天做了大于或等于 m 题时,接下来的所有日子里,他就再也不做题了。
请问,到了第 N 天,小杨总共做了多少题呢?
输入格式
总共 4 行。第一行一个整数 a,第二行一个整数 b,第三行一个整数 m,第四行一个整数 N。
保证 0≤a,b≤10;a,b<M<1,000,000;3≤N≤364。
输出格式
一行一个整数,表示小杨 N 天里总共做了多少题目。
输入输出样例
输入 #1
1
2
10
5
输出 #1
19
输入 #2
1
1
5
8
输出 #2
12
说明/提示
样例解释 1
小杨第一天做 1 题,第二天做 2 题,第三天做 1+2=3 题,第四天做 2+3=5 题,第五天做 3+5=8 题。因此他总共做了 1+2+3+5+8=19 题。
样例解释 2
小杨前 5 天分别做了 1,1,2,3,5 题,由于第 5 天小杨做了 5 题,而 m=5,于是小杨从此以后不再做题。因此小杨总共做了 1+1+2+3+5=12 题。
答案
#include<iostream>
using namespace std;
int main(){
//1)确定起点a,b,极限m,天数n
int a,b,m,n;
cin>>a>>b>>m>>n;
//2)模拟做题过程
int sum=0;//计算做了多少题
for(int i=1;i<=n;i++){
//2.1)累加今天做的题
sum+=a;
//2.2)判断是否达到极限
if(a>=m) break;
//2.3)计算明天的题
int temp=a+b;
a=b;
b=temp;
}
//3)输出做题数量
cout<<sum;
}
第2题 [GESP202312 二级] 小杨的H字矩阵
题目描述
小杨想要构造一个 N×N 的 H 字矩阵(N 为奇数),具体来说,这个矩阵共有 N 行,每行 N 个字符,其中最左列、最右列都是 |
,而中间一行(即第2N+1行)的第 2∼N−1 个字符都是 -
,其余所有字符都是半角小写字母 a
。例如,一个 N=5 的 H 字矩阵如下:
|aaa|
|aaa|
|---|
|aaa|
|aaa|
请你帮小杨根据给定的 N 打印出对应的“H 字矩阵”。
输入格式
一行一个整数 N(5≤N≤49 ,保证 N 为奇数)。
输出格式
输出对应的“H 字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出 N 行,每行除了换行符外恰好包含 N 个字符,这些字符要么是 - ,要么是 | ,要么是 a 。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。
输入输出样例
输入 #1
5
输出 #1
|aaa|
|aaa|
|---|
|aaa|
|aaa|
输入 #2
7
输出 #2
|aaaaa|
|aaaaa|
|aaaaa|
|-----|
|aaaaa|
|aaaaa|
|aaaaa|
答案
#include<iostream>
using namespace std;
int main(){
//1)确定矩阵大小
int n;
cin>>n;
//2)循环输出矩阵
//2.1)循环行、列
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
//2.2)输出对应字符
if(j==1||j==n){//如果是第1列、最后1列
cout<<"|";
} else if(i==n/2+1){//如果是中间那一行
cout<<"-";
}else{//其余所有情况,输出a
cout<<"a";
}
}
cout<<endl;
}
}