2024年9月 GESP C++ 2级认证考试真题(含编程操作题部分)
选 单选题(共 15 题,每题 2 分)
据有关资料,山东大学于 $1972$ 年研制成功 DJL-1 计算机,并于 $1973$ 年投入运行,其综合性能居当时全国第三位。DJL-1 计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成,设计存贮周期为 $2 \mu s$(微秒)。那么该磁心存储元件相当于现代计算机的( )。
IPv4 版本的因特网总共有( )个 A 类地址网络。
在 C++ 中,下列不可做变量的是( )。
在 C++ 中,与 for (int i = 1; i < 10; i++) 效果相同的是( )。
在 C++ 中,cout << (5 / 2 + 5 % 3) 的输出是( )。
假定变量 $a$ 和 $b$ 可能是整型、字符型或浮点型,则下面 C++ 代码执行时先后输入 $-2$ 和 $3.14$ 后,其输出不可能是( )。[已知字符 '+'、'-'、'=' 的 ASCII 码值分别是 $43$、$45$ 和 $61$]
cin >> a;
cin >> b;
cout << (a + b);
在 C++ 代码中假设 $N$ 为正整数,则下面代码能获得个位数的是( )。
下面 C++ 代码执行后的输出是( )。
int i;
for (i = 0; i < 10; i++){
if (i % 2)
break;
cout << "0#";
}
if(i==10) cout << "1#";
执行下面 C++ 代码并输入 $1$ 和 $0$,有关说法正确的是( )。
int a,b;
cin >> a >> b;
if(a&&b)
cout << ("1");
else if(!(a||b))
cout << ("2");
else if(a || b)
cout << ("3");
else
cout << ("4");
下面 C++ 代码执行后的输出是( )。
int loopCount = 0;
for (int i = 1; i < 5; i += 2)
loopCount += 1;
cout << (loopCount);
下图是 C++ 程序执行后的输出。为实现其功能,横线处应填入代码是( )。
7
1
2 3
3 4 5
4 5 6 7
5 6 7 8 9
6 7 8 9 10 11
7 8 9 10 11 12 13
//////////////////////////////
int lineNum;
cin >> lineNum;
for (int i = 1; i < lineNum + 1; i++) {
for (int __________________)
cout << j << " ";
cout << endl;
}
下面 C++ 代码执行后输出逆序数,如输入 $123$ 则输出 $321$。如输入 $120$ 则输出 $21$。横线处先后应填入的代码是( )。
int N;
cin >> N;
int rst = 0;
while (N){
____________________;
____________________;
}
cout << (rst);
下面的 C++ 代码用于输入学生成绩,并根据人数计算出平均成绩,有关说法错误的是( )。
float Sum = 0; // 保存总成绩
int cnt = 0; // 保存学生人数
while (1){
int score;
cin >> score;
if (score < 0)
break;
cnt += 1;
Sum += score;
}
cout << "总学生数:" << cnt << "平均分:" << Sum/cnt;
以下 C++ 代码判断输入的正整数是否为质数,如果该数字是质数,则输出 YES,否则输出 NO。质数是指仅能被 $1$ 和它本身整除的正整数。请在横线上填写代码。( )
int num, i;
cin >> num;
for(i = 2; i < num; i++)
if (__________){
cout << ("NO");
break;
}
if(i == num)
cout << ("YES");
一个数如果能被某个数(比如 $7$)整除,或者含有该数,则说该数是某个数的相关数。下面 C++ 代码用于判定输入的数与 $7$ 是否有关。下列说法错误的是( )。
int N, M;
bool Flag = false;
cin >> N;
M = N;
if (M % 7 == 0)
Flag = true;
while (!Flag && M){
if (M % 10 == 7){
Flag = true;
break;
}
M /= 10;
}
if (Flag)
cout << N << "与7有关";
else
cout << N << "与7无关";
判 判断题(共 10 题,每题 2 分)
小杨最近开始学习 C++ 编程,老师说 C++ 是一门面向对象的编程语言,也是一门高级语言。( )
在 C++ 中,cout << (3, 4, 5) 可以输出 3 4 5,且每个输出项之间用空格分开。( )
C++ 表达式 12 % 10 % 10 的值为 $2$。( )
C++ 语句 cout << rand() << ' ' << rand(); 的第二个输出值较大。( )
定义 C++ 的 int 类型的变量 $ch$ ,而且值为 '1' ,则语句 cout << int(ch); 的输出为 $1$ 。( )
下面 C++ 代码执行后将输出 $10$。( )
int i;
for (i = 0; i < 10; i++)
continue;
if(i == 10)
cout << i;
下面 C++ 代码能求整数 $N$ 和 $M$ 之间所有整数之和,包含 $N$ 和 $M$。( )
int N, M, Sum;
cin >> N >> M;
if (N > M){
int tmp = N;
N = M, M = tmp;
}
for (int i = N; i < M+1; i++)
Sum += i;
cout << Sum;
将下面 C++ 代码中的 L3 标记的代码行调整为 for (int i = 0; i < 5; i++) 后输出结果相同。( )
int loopCount = 0;
for (int i = 1; i < 5; i++) // L3
for (int j = 0; j < i; j++)
loopCount += 1;
cout << loopCount;
某一系列数据的规律是从第 $3$ 个数值开始是前两个数之和。下面的代码求第 $N$ 个数的值,$N$ 限定为大于 $2$。(
)
int start1; // 第1个数
int start2; // 第2个数
int N; //求N个数的值
int tmp;
cin >> start1 >> start2 >> N;
for (int i = 2; i < N; i++){
tmp = start1 + start2;
start1 = start2;
start2 = tmp;
}
cout << start2;
下面 C++ 代码执行时如果输入 $2024$,则输出是 $4202$。( )
int N, flag=0;
cin >> N;
while (N){
if(!flag) cout << N % 10;
N /= 10;
flag = (flag + 1)%2;
}
编 编程操作题(共 2 题,共 50 分)
试题名称:数位之和
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨有 $n$ 个正整数,他认为一个正整数是美丽数字当且仅当该正整数每一位数字的总和是 $7$ 的倍数。
小杨想请你编写一个程序判断 $n$ 个正整数哪些是美丽数字。
输入格式
第一行包含一个正整数 $n$,表示正整数个数。
之后 $n$ 行,每行一个包含一个正整数 $a_i$。
输出格式
对于每个正整数输出一行一个字符串,如果是美丽数字则输出 Yes,否则输出 No。
样例输入 #1
3
7
52
103
样例输出 #1
Yes
Yes
No
说明/提示
数据规模与约定
对全部的测试数据,保证 $1 \leq n \leq 10^5$,$1 \leq a_i \leq 10^5$。
试题名称:小杨的 N 字矩阵
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨想要构造一个 $m \times m$ 的 $N$ 字矩阵($m$ 为奇数),这个矩阵的从左上角到右下角的对角线、第 $1$ 列和第 $m$ 列都是半角加号 + ,其余都是半角减号 - 。例如,一个 $5 \times 5$ 的 N 字矩阵如下:
+---+
++--+
+-+-+
+--++
+---+
请你帮小杨根据给定的 $m$ 打印出对应的 N 字矩阵。
输入格式
输入只有一行包含一个正整数 $m$。
输出格式
输出对应的 $N$ 字矩阵。
样例输入 #1
5
样例输出 #1
+---+
++--+
+-+-+
+--++
+---+
说明/提示
数据规模与约定
对全部的测试数据,保证 $3 \leq m \leq 49$ 且 $m$ 是奇数。