GESP-C++-四级-2023/6-样题

*
您的姓名:
一、单选题(每题 2 分,共 30 分)
*
1. 在 C++中, 指针变量的大小( 单位: 字节) 是()
4
2
与编译器有关
8
*
2. 以下哪个选项能正确定义一个二维数组()
double c[3][];
int a[][];
char b[][4];
bool d[3][4];
*
3. 在 C++中, 以下哪种方式不能用于向函数传递参数()
模板传递
引用传递
值传递
指针传递
*
4. 以下关于 C++函数的形参和实参的叙述, 正确的是()
形参和实参是完全相同的
实参是形参的别名
形参是实参的别名
形参用于函数声明, 实参用于函数调用
*
5. 排序算法的稳定性是指()
排序算法的性能稳定
排序算法对任意输入都有较好的效果
排序算法容易实现
相同元素在排序后的相对顺序保持不变
*
6. 如果有如下二维数组定义, 则 a[0][3]的值为()
int a[2][2] = {{0, 1}, {2, 3}};
编译出错
3
0
1
*
7. 以下哪个选项能正确访问二维数组 array 的元素()
array{1}{2}
array(1)(2)
array[1][2]
array[1, 2]
*
8. 以下哪个选项是 C++中正确的指针变量声明()
*int p;
int *p;
int* p*;
int p*;
*
9. 在 C++中, 以下哪个关键字或符号用于声明引用()
&
reference
*
pointer
*
10. 以下哪个递推关系式表示斐波那契数列()
F(n) = F(n-1) * F(n-2)
F(n) = F(n-1) / F(n-2)
F(n) = F(n-1) + F(n-2)
F(n) = F(n-1) + F(n-2) + F(n-3)
*
11. 以下哪个函数声明在调用时可以传递二维数组的名字作为参数?()
void BubbleSort(int * a[]);
void BubbleSort(int a[][]);
void BubbleSort(int ** a);
void BubbleSort(int a[3][4]);
*
12. 在 C++中, 以下哪个关键字用来捕获异常()
throw
try
finally
catch
*
13. 在下列代码的横线处填写(), 可以使得输出是“ 20 10”。
#include <iostream>
using namespace std;
void xchg(________________) { // 在此处填入代码
    int t = x;
    x = y;
    y = t;
}
int main() {
    int a = 10, b = 20;
    xchg(a, b);
    cout << a << " " << b << endl;
    return 0;
}
int & x, int & y
int a, int b
int & a, int & b
int x, int y
*
14. 在下列代码的横线处填写(), 可以使得输出是“ 21”。
#include <iostream>
using namespace std;
int main() {
    int a[5];
    a[0] = 1;
    for (int i = 1; i < 5; i++)
        a[i] = a[i – 1] * 2;
    int sum = 0;
    for (int i = 0; i < 5; ________) // 在此处填入代码
        sum += a[i];
    cout << sum << endl;
    return 0;
}
i |= 2
i += 3
i++
i += 2
*
15. 在下列代码的横线处填写(), 完成对有 n 个 int 类型元素的数组 array
由小到大排序。
void BubbleSort(int array[], int n) {
    for (int i = n; i > 1; i--)
    for (____________________) // 在此处填入代码
        if (array[j] > array[j + 1]) {
            int t = array[j];
            array[j] = array[j + 1];
            array[j + 1] = t;
        }
}
int j = i – 2; j >= 0; j--
int j = 0; j < i; j++
int j = 0; j < i - 1; j++
int j = i - 1; j >= 0; j--
二、判断题 (每题 2 分,共 20 分)
*
1. C++语言中的指针变量可以指向任何类型的数据。
*
2. 在 C++语言中, 函数的参数默认以地址传递方式进行传递。
*
3. C++语言中的全局变量在整个程序的生命周期内都是有效的。
*
4. 递推算法通常有初始值。
*
5. 冒泡排序是一种稳定的排序算法。
*
6. C++语言中, 如果异常发生, 但没有处理异常的代码, 则程序会由于一直等待处理而死机。
*
7. C++语言中的局部变量在函数调用结束后会被销毁。
*
8. &和&&都是 C++语言的运算符, *和**也都是。
*
9. 如果希望设计一个函数 xchg, 实现交换两个 int 变量的值, 则它的声明可以写为 void xchg(int a, int b);。
*
10. 已知数组 a 定义为 int a[100];, 则赋值语句 a['0'] = 3;会导致编译错误。
三、编程题 (每题 25 分,共 50 分)
1. 绝对素数
如果一个两位数是素数, 且它的数字位置经过对换后仍为素数, 则称为绝对素数, 例如 13。 给定两个正整数 A、 B, 请求出大于等于 A、 小于等于 B 的所有绝对素数。

【 输入格式】输入 1 行, 包含两个正整数 A 和 B。 保证 10<A<B<100。
【 输出格式】若干行, 每行一个绝对素数, 从小到大输出。

【 样例输入】
11 20
【 样例输出】
11
13
17
将 .cpp 文件 修改成 .txt文件后再提交
点击上传
2. 填幻方
在一个 N× N 的正方形网格中, 每个格子分别填上从 1 到 N× N 的正整数, 使得正方形中任一行、 任一列及对角线的几个数之和都相等, 则这种正方形图案就称为“ 幻方”( 输出样例中展示了一个 3× 3 的幻方)。 我国古代称为“ 河图”、“ 洛书”, 又叫“ 纵横图”。幻方看似神奇, 但当 N 为奇数时有很方便的填法:
1) 一开始正方形中没有填任何数字。 首先, 在第一行的正中央填上 1。
2) 从上次填数字的位置向上移动一格, 如果已经在第一行, 则移到同一列的最后一行; 再向右移动一格, 如果已经在最右一列, 则移动至同一行的第一列。如果移动后的位置没有填数字, 则把上次填写的数字的下一个数字填到这个位置。
3) 如果第 2 步填写失败, 则从上次填数字的位置向下移动一格, 如果已经在最下一行, 则移到同一列的第一行。 这个位置一定是空的( 这可太神奇了! ),把上次填写的数字的下一个数字填到这个位置。
4) 重复 2、 3 步骤, 直到所有格子都被填满, 幻方就完成了!
快来编写一个程序, 按上述规则, 制作一个 N× N 的幻方吧。

【 输入格式】
输入为一个正奇数 N, 保证 3≤N≤21。
【 输出格式】
输出 N 行, 每行 N 个空格分隔的正整数, 内容为 N× N 的幻方。

【 样例输入】
3
【样例输出】
8 1 6
3 5 7
4 9 2
将 .cpp 文件 修改成 .txt文件后再提交
点击上传
问卷星提供技术支持
举报