2025年03月GESPC++一级真题解析(含视频)
答案D,DeepSeek(人工智能),哪吒2(电影),所以deepseek可以为哪吒生成剧情脚本。
视频讲解:GESP2025年3月二级C++真题讲解
一、单选题
第1题
解析:
答案D,DeepSeek(人工智能),哪吒2(电影),所以deepseek可以为哪吒生成剧情脚本
第2题
解析:
答案C,椭圆(开始/结束),平行四边形(输入/输出),菱形(判断)
第3题
解析:
答案A,==表示判断相等,不会改变a、b的值,所以a为3,b为4
第4题
解析:
答案A,
A:只有0至9的情况,1至8已被判断,剩下0和9,else即可实现
B:remainder <= 5会把0的情况也纳入进来
C:表示一个范围时,不可“6<=a<=8”,需联立两个条件“6<=a&&a<=8”
D:取个位需n%10
第5题
解析:
答案D,i的所有情况:0 1 2 3 4 5 6 7 8 9,0 3 6 9时+2,其余1 2 4 5 7 8时+1,所以总共+2*4+1*6=14
第6题
解析:
答案A,break第一次循环就退出,i为初始值10
第7题
解析:
答案D,
i的所有循环情况:0 1 2 3 4 5 6 7 8 9
只有0 3 6 9时,i%3的值为0
所以i为1 2 4 5 7 8才输出”0#“,总共输出6次
因为i为10的时候,才跳出循环,所以最后还会输出“1#”
最终输出“0#0#0#0#0#0#1#”
第8题
解析:
答案B,
i为0时,j不循环
i为1时,j循环输出“1-”
i为2时,j循环输出“2-1-”
i为3时,j循环输出“3-2-1-”
i为4时,j循环输出“4-3-2-1-”
最终输出“1-2-1-3-2-1-4-3-2-1-”
第9题
解析:
答案C,!(i%7)是在判断i除以7是否有余数,不是判断除以7余数为2
第10题
解析:
答案B,
找到3,数量+1,退出即可,所以为break
当前个位不为3,需/10,检查下一个位数,所以为j/=10
第11题
解析:
答案C,"实现1"只有一层循环,效率更高
第12题
解析:
答案D,要找的是4-1000所有偶数的质数之和,break放外面,只能找到4的质数之和了
第13题
解析:
答案B,"last+=1"与"last=last+1"效果相同
第14题
解析:
答案C,rand()%10可随机取出0-9,需+1,变成1-10
第15题
解析:
答案C,b-a的差可能为负数,需abs()转为正数
二、判断题
第1题
解析:
答案√,现阶段学习的编程语言都为高级语言,不会涉及到汇编语言和机器语言,高级语言需百编译转为机器语言,计算机才可执行
第2题
解析:
答案√,n%10是常见的获取个位方法
n-n/10*10也可,原数(n)-去除个位(n/10*10)=个位
第3题
解析:
答案√,10<=n<=12计算过程如题目描述一样
第4题
解析:
答案×,sqrt(N)*sqrt(N)计算有误差,不能判断相等
第5题
解析:
答案√,
a=a-b时,a为-1,b为3
b=a+b时,a为-1,b为2
a=b-a时,a为3,b为2
第6题
解析:
答案√,i直到为10时,才跳出循环
第7题
解析:
答案√,第一次循环就退出了,所以i为初始值1
第8题
解析:
答案√,
i为0时,j不循环
i为1时,j循环1次
i为2时,j循环2次
i为3时,j循环3次
i为4时,j循环4次
j总共循环1+2+3+4=10次,所以输出10次ok
第9题
解析:
答案√,tnt对每次的i进行累加,再累加一个0,结果相同
第10题
解析:
答案×,i为4时,会输出4
三、编程题
第1题 [GESP202503 二级] 等差矩阵
题目描述
小 A 想构造一个 n 行 m 列的矩阵,使得矩阵的每一行与每一列均是等差数列。小 A 发现,在矩阵的第 i行第 j 列填入整数 i×j,得到的矩阵能满足要求。你能帮小 A 输出这个矩阵吗?
输入格式
一行,两个正整数 n,m。
输出格式
共 n 行,每行 m 个由空格分割的整数,表示小 A 需要构造的矩阵。
输入输出样例
输入 #1
3 4
输出 #1
1 2 3 4 2 4 6 8 3 6 9 12
说明/提示
对于所有测试点,保证 1≤n,m≤50。
答案
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 1)确定矩阵大小
int n, m;
cin >> n >> m;
// 2)输出矩阵
for (int i = 1; i <= n; i++)
{ // 当前等差
for (int j = i; j <= m * i; j += i)
{ // 当前数列
cout << j << " ";
}
cout << endl;
}
}
第2题 [GESP202503 二级] 时间跨越
题目描述
假设现在是 y 年 m 月 d 日 h 时而 k 小时后是 y′ 年 m′ 月 d′ 日 h′ 时,对于给定的 y,m,d,h,k,小杨想请你帮他计算出对应的 y′,m′,d′,h′ 是多少。
输入格式
输入包含五行,每行一个正整数,分别代表 y,m,d,h,k。
输出格式
输出四个正整数,代表 y′,m′,d′,h′。
输入输出样例
输入 #1
2008 2 28 23 1
输出 #1
2008 2 29 0
说明/提示
对于全部数据,保证有 2000≤y≤3000,1≤m≤12,1≤d≤31,0≤h≤23,1≤k≤24。数据保证为合法时间。
闰年判断规则
- 普通闰年:年份能被 4 整除,但不能被 100 整除。
- 世纪闰年:年份能被 400 整除。
满足以上任意一条规则的年份就是闰年,否则是平年。
答案
#include <bits/stdc++.h>
using namespace std;
int main(){
//1)输入时间ymdh,经过时间k
int y,m,d,h,k;
cin>>y>>m>>d>>h>>k;
int arr[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//2)模拟"一天一天的走"
h+=k;
while(h>=24){
//2.1)"小时"进位
h-=24;
//2.2)"日"进位
d+=1;
if(y%100!=0&&y%4==0||y%400==0) arr[2]=29;//解决闰年问题
else arr[2]=28;
if(d>arr[m]){
d=1;
m+=1;
//2.3)"月"进位
if(m>12){
y+=1;
m=1;
}
}
}
//3)输出走完的日期
cout<<y<<" " <<m<<" "<<d<<" "<<h;
}
更多推荐
所有评论(0)