2024年3月 GESP C++ 2级认证考试真题(含编程操作题部分)
选 单选题(共 15 题,每题 2 分)
下列流程图的输出结果是?( )
以下选项中不符合 C++ 变量命名规则的是?( )
以下选项中,不能用于表示分支结构的 C++ 保留字是?( )
下列说法错误的是?( )
下列 $4$ 个表达式中,答案不是整数 $8$ 的是?( )
下面 C++ 代码执行后的输出是?()
int n, a, m, i;
n = 3, a = 5;
m = (a - 1) * 2;
for (i = 0; i < n - 1; i++)
m = (m - 1) * 2;
cout << m;
下面 C++ 代码执行后的输出是?()
int n, i, result;
n = 81;
i = 1, result = 1;
while (i * i <= n) {
if (n % (i * i) == 0)
result = i * i;
i += 1;
}
cout << result;
下面 C++ 代码执行后的输出是?()
int s, t, ans;
s = 2, t = 10;
ans = 0;
while (s != t) {
if (t % 2 == 0 && t / 2 >= s)
t /= 2;
else
t -= 1;
ans += 1;
}
cout << ans;
下面 C++ 代码执行后的输出是?()
int n, masks, days, cur;
n = 17, masks = 10, days = 0;
cur = 2;
while (masks != n) {
if (cur == 0 || cur == 1)
masks += 7;
masks -= 1;
days += 1;
cur = (cur + 1) % 7;
}
cout << days;
以下 C++ 代码判断一个正整数 $N$ 的各个数位是否都是偶数。如果都是,则输出“是”,否则输出“否”。例如 $N=2024$ 时输出“是”。则横线处应填入( )。
int N, Flag;
cin >> N;
Flag = true;
while (N != 0){
if (N % 2 != 0){
Flag = false;
_____________
}
else
N /= 10;
}
if (Flag == true)
cout << "是";
else
cout << "否";
有句俗话叫“三天打渔,两天晒网”。如果小杨前三天打渔,后两天晒网,一直重复这个过程,以下程序代码用于判断,第 $n$ 天小杨是在打鱼还是晒网,横线处应填写?( )
int n,i;
cin >> n;
i = n % 5;
if (__________________) // 在此处填写代码
cout << "晒网";
else
cout << "打鱼";
一个数的所有数字倒序排列后这个数的大小保持不变,这个数就是回文数,比如 $101$ 与 $6886$ 都是回文数,而 $100$ 不是回文数。以下程序代码用于判断一个数是否为回文数,横线处应填写?( )
int n,a,k;
cin >> n;
a = 0;
k = n;
while (n > 0){
a = __________; // 在此处填写代码
n /= 10;
}
if (a == k)
cout << "是回文数";
else
cout << "不是回文数";
给定两个整数 $n$ 与 $k$,打印出一个栅栏图形,这个栅栏应该分成 $n$ 段,段与段之间的间隔为 +, 段内的填充为 $k$ 个 -。形如 $n = 5$, $k = 6$ 时,图形如下:
+------+------+------+------+------+
以下程序代码用于绘制该图形,横线处应填写?( )
int n, k, i, j;
n = 5, k = 6;
for (i = 0; i < n; i++){
__________ // 在此处填写代码
for (j = 1; j < k; j++)
cout << '-' ;
}
cout << '+';
小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是。( )
中国计算机学会(CCF)在 2024 年 1 月 27 日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。
判 判断题(共 10 题,每题 2 分)
如果有以下 C++ 代码:
double s;
int t;
s = 18.5;
t = int(s) + 10;
那么 cout << t 的结果为 $28.5$。
Xyz,xYz,xyZ 是三个不同的变量。
cout << (8 < 9 < 10) 的输出结果为 true。
for (i = 0; i < 100; i+=2) ; 语句中变量 $i$ 的取值范围是 $0$ 到 $99$。
C++ 中 cout << float(2022) 与 cout << float('2022') 运行后的输出结果均为 $2022$。
已知 A 的 ASCII 码值为 $65$,表达式 int('C') + abs(-5.8) 的值为 $72.8$。
bool() 函数用于将给定参数或表达式转换为布尔类型。语句 bool(-1) 返回的是 false 值。( )
如果变量 $a$ 的值使得 C++ 表达式 sqrt(a) == abs(a),则 $a$ 的值为 $0$。( )
小杨今年春节回奶奶家了,奶奶家的数字电视要设置 ip 地址并接入到 WIFI 盒子才能收看节目,那这个 WIFI 盒子具有路由器的功能。( )
任何一个 for 循环都可以转化为等价的 while 循环( )。
编 编程操作题(共 2 题,共 50 分)
试题名称:乘法问题
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小 A 最初刚刚学习了乘法,为了帮助他练习,我们给他若干个正整数,并要求他将这些数乘起来。
对于大部分题目,小 A 可以精确地算出答案,不过,若这些数的乘积超过 $10^6$,小 A 就不会做了。
请你写一个程序,告诉我们小 A 会如何作答。
输入格式
第一行一个整数 $n$,表示正整数的个数。
接下来 $n$,每行一个整数 $a$。小 A 需要将所有的 $a$ 乘起来。
输出格式
输出一行,如果乘积超过 $10^6$,则输出 >1000000;否则输出所有数的乘积。
样例输入 #1
2
3
5
样例输出 #1
15
样例输入 #2
3
100
100
100
样例输出 #2
1000000
样例输入 #3
4
100
100
100
2
样例输出 #3
>1000000
说明/提示
数据规模与约定
对全部的测试数据,保证 $1 \leq n \leq 50$,$1 \leq a \leq 100$。
试题名称:小杨的日字矩阵
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨想要构造一个 $N\times N$ 的日字矩阵($N$ 为奇数),具体来说,这个矩阵共有 $N$ 行,每行 $N$ 个字符,其中最左列、最右列都是 |,而第一行、最后一行、以及中间一行(即第 $\frac{N+1}{2}$ 行)的第 $2\sim N-1$ 个字符都是 - ,其余所有字符都是半角小写字母 x 。例如,一个 $N = 5$ 日字矩阵如下:
|---|
|xxx|
|---|
|xxx|
|---|
请你帮小杨根据给定的 $N$ 打印出对应的“日字矩阵”。
输入格式
一行一个整数 $N$($5\leq N \leq 49$,保证 $N$ 为奇数)。
输出格式
输出对应的“日字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点等任何符号。你一个恰好输出 $N$ 行,每行除了换行符外恰好包含 $N$ 个字符,这些字符要么是 -,要么是 |,要么是 x。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。
样例输入 #1
5
样例输出 #1
|---|
|xxx|
|---|
|xxx|
|---|
样例输入 #2
7
样例输出 #2
|-----|
|xxxxx|
|xxxxx|
|-----|
|xxxxx|
|xxxxx|
|-----|