视频讲解:GESP2024年9月二级C++真题讲解
一、单选题
第1题
解析:
答案A,题目都围绕“存储“这个关键词,锁定A内存和B磁盘,题目还不断强调存储速度快,即选A内存
第2题
解析:
答案C,
IPv4地址分为 A、B、C、D、E 五类,按网络规模和应用场景划分:
类别 | 网络号范围 | 网络位数 | 主机位数 | 可用网络数 | 每个网络的主机数 |
---|---|---|---|---|---|
A | 1.0.0.0 ~ 126.0.0.0 | 8位(首字节) | 24位 | 126 | (2^{24}-2 = 16,777,214) |
B | 128.0.0.0 ~ 191.255.0.0 | 16位 | 16位 | 16,384 | (2^{16}-2 = 65,534) |
C | 192.0.0.0 ~ 223.255.255.0 | 24位 | 8位 | ~2,097,152 | (2^{8}-2 = 254) |
D | 224.0.0.0 ~ 239.255.255.255 | 组播地址 | 无网络/主机划分 | 仅用于组播通信 | |
E | 240.0.0.0 ~ 255.255.255.255 | 保留地址 | 未分配使用 |
第3题
解析:
答案A,变量命规则:
1.只能由数字字母下划线组合
2.不能数字开头
3.不能和关键字冲突
"-"违反了第一条规则
第4题
解析:
答案C,只有C选项i从1循环到9
第5题
解析:
答案C,
5/2+5%3
2+2
4
第6题
解析:
答案D,
a、b为整型时,-2+3=-1,A选项排除
a、b为浮点型时,-2+3.14=1.14,B选项排除
a为字符型,b为整型时,’-‘+2=47,C选项排除
第7题
解析:
答案A,整型%10就是在获取个位
第8题
解析:
答案A,i循环为:0、1、2、3、4、5、6、7、8、9,i为0时,输出“#0”,为1时退出循环,所以“1#”不输出,最终输出“0#”
第9题
解析:
答案C,1&&0为false,!(1||0)为false,1||0为true
第10题
解析:
答案B,i循环为:1、3,只循环2次,所以最终结果为2
第11题
解析:
答案C,第二层循环表示列,每列的起点是行,所以j=i;每列的数量由行控制,所以j<i*2
第12题
解析:
答案A,数字反转
第1步:*10
第2步:累加当前个位
第3步:取出当前个位
第13题
解析:
答案A,1表示true,即while无限循环,不会有语法错误
第14题
解析:
答案B,一旦发现除了1和本身以外的因数,就不是质数,即B选项
第15题
解析:
答案A,break不会导致错误,因为flag事先假设为false,0和负数都能排除
二、判断题
第1题
解析:
答案√,市面上学习的语言,大部分都面向对象且是高级语言,只有C不是,而C++是
第2题
解析:
答案×,括号内多个数据,只会输出最后一个,即5
第3题
解析:
答案√,%10去除超过10的部分,连续两次,效果一样,还是保留个位
第4题
解析:
答案×,生成的随机数是随机的
第5题
解析:
答案×,字符’1‘的ASCII值为49,应输出49
第6题
解析:
答案√,continue不影响i的自增,i循环到10才跳出来,所以最后输出10
第7题
解析:
答案×,sum没有初始值
第8题
解析:
答案√,i为0时,j不循环,所以不影响结果
第9题
解析:
答案√,斐波那契数列的变形,代码无错
第10题
解析:
答案×,代码是实现由个位开始,奇数位输出,偶数位不输出,应输出40
三、编程题
第1题 [GESP202409 二级] 数位之和
题目描述
小杨有 n 个正整数,他认为一个正整数是美丽数字当且仅当该正整数每一位数字的总和是 7 的倍数。
小杨想请你编写一个程序判断 n 个正整数哪些是美丽数字。
输入格式
第一行包含一个正整数 n,表示正整数个数。
之后 n 行,每行一个包含一个正整数 ai。
输出格式
对于每个正整数输出一行一个字符串,如果是美丽数字则输出 Yes
,否则输出 No
。
输入输出样例
输入 #1
3
7
52
103
输出 #1
Yes
Yes
No
说明/提示
数据规模与约定
对全部的测试数据,保证 1≤n≤10^5,1≤ai≤10^5。
答案
#include<iostream>
using namespace std;
int main(){
//1.确定数量
int n;
cin>>n;
//2.输入每个数
for(int i=1;i<=n;i++){
int temp;
cin>>temp;
//3.求出当前这个数的各个位数之和
int sum=0;
while(temp){
sum+=temp%10;
temp/=10;
}
//4.判断“各个位数之和”%7==0
if(sum%7==0) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
第2题 [GESP202409 二级] 小杨的 N 字矩阵
题目描述
小杨想要构造一个 m×m 的 N 字矩阵(m 为奇数),这个矩阵的从左上角到右下角的对角线、第 1 列和第 m 列都是半角加号 +
,其余都是半角减号 -
。例如,一个 5×5 的 N 字矩阵如下:
+---+
++--+
+-+-+
+--++
+---+
请你帮小杨根据给定的 m 打印出对应的 N 字矩阵。
输入格式
输入只有一行包含一个正整数 m。
输出格式
输出对应的 N 字矩阵。
输入输出样例
输入 #1
5
输出 #1
+---+
++--+
+-+-+
+--++
+---+
说明/提示
数据规模与约定
对全部的测试数据,保证 3≤m≤49 且 m 是奇数。
答案
#include<iostream>
using namespace std;
int main(){
//1.确定矩阵大小
int n;
cin>>n;
//2.嵌套循环输出矩阵
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
//3.+:第一列 ||最后一列||对角线
if(j==1||j==n||j==i){
cout<<"+";
}else{//4.-:其他所有
cout<<"-";
}
}
cout<<endl;
}
}