GESP C++ 四级样题卷

2023-11-02

一、单选题(每题 2 分,共 30 分)

1. 在 C++中,指针变量的大小(单位:字节)是( )
A. 2
B. 4
C. 8
D. 与编译器有关
答案:D
解析:
在大多数现代的 32-bit 和 64-bit 的 C++ 编译器中,指针变量的大小通常是 4 字节(32 位系统)或 8 字节(64 位系统)。这是因为指针存储了一个内存地址,而内存地址在不同的体系结构中需要不同的位数来表示。所以在常见的情况下,32 位系统上的指针变量大小是 4 字节,64 位系统上的指针变量大小是 8 字节。然而,具体的大小可能会因编译器、操作系统和体系结构的不同而有所变化。
2. 以下哪个选项能正确定义一个二维数组( )
A. int a[][];
B. char b[][4];
C. double c[3][];
D. bool d[3][4];
答案:D
解析:

 

3. 在 C++中,以下哪种方式 不能 用于向函数传递参数( )
A. 值传递
B. 引用传递
C. 指针传递
D. 模板传递
答案:D
解析:

A. 值传递:将实际参数的值复制给函数参数,在函数内部操作的是副本,不影响原始值。
B. 引用传递:将实际参数的引用传递给函数,函数内部可以直接操作原始值,对原始值的修改会影响外部的变量。
C. 指针传递:将实际参数的地址传递给函数,函数通过指针访问实际参数,可以在函数内部修改原始值。但是模板传递不是传递参数的方式,而是用于生成具有通用性的函数或类的方式。

4. 以下关于 C++函数的形参和实参的叙述,正确的是( )
A. 形参是实参的别名
B. 实参是形参的别名
C. 形参和实参是完全相同的
D. 形参用于函数声明,实参用于函数调用
答案:D
解析:

在C++中,形参(formal parameter)和实参(actual parameter)是两个不同的概念:

  • 形参(形式参数):形参是在函数声明或定义中用于接收传递给函数的值或引用的变量,它在函数的参数列表中声明,并且在函数体内部使用。形参是函数定义的一部分,用于指定函数在调用时应该接受的数据类型和数量。

  • 实参(实际参数):实参是在函数调用时提供给函数的具体值或引用,它是函数调用时传递给函数的真实数据。实参用于调用函数,并且传递给函数的是实际的数据,供函数在执行时使用。

  • 因此,正确的叙述是:形参用于函数声明,实参用于函数调用。

5. 排序算法的稳定性是指( )
A. 相同元素在排序后的相对顺序保持不变
B. 排序算法的性能稳定
C. 排序算法对任意输入都有较好的效果
D. 排序算法容易实现
答案:A
解析:排序算法的稳定性是指在排序过程中,相等元素的顺序不会改变,即相同元素在排序后的相对顺序保持不变。如果一个排序算法是稳定的,那么对于具有相同关键字的元素,它们在排序后仍然保持原来的顺序。
6. 如果有如下二维数组定义,则 a[0][3] 的值为( )
int a[2][2] = {{0, 1}, {2, 3}};
A. 编译出错
B. 1
C. 3
D. 0
答案:C
解析:在 C语言中,二维数组是按行排列的,即按行顺序存放,正确的下标是 a[0][0] 、a[0][1] 、a[1][0] 、 a[1][1]。一维数组是一样的,我们都需要注意下标越界的问题a[0][3]相当于 a[1][1],a[0][3]的值为3
7. 以下哪个选项能正确访问二维数组 array 的元素( )
A. array[1, 2]
B. array(1)(2)
C. array[1][2]
D. array{1}{2}
答案:C
解析:略
8. 以下哪个选项是 C++中正确的指针变量声明( )
A. int *p;
B. int p*; C. *int p;
D. int* p*;
答案:A
解析:
9. 在 C++中,以下哪个关键字或符号用于声明引用( )
A. pointer
B. &
C. *
D. reference
答案:B
解析:略
10. 以下哪个递推关系式表示斐波那契数列( )
A. F(n) = F(n-1) + F(n-2) + F(n-3)
B. F(n) = F(n-1) + F(n-2)
C. F(n) = F(n-1) * F(n-2)
D. F(n) = F(n-1) / F(n-2)
答案:B
解析:

斐波那契数列是一种数列,其中每个数字是前两个数字之和,起始数字通常是0和1。数列的前几项如下:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

数列的递推关系式为:F(n) = F(n-1) + F(n-2),其中 F(n) 表示第 n 个数的值,F(n-1) 表示第 n-1 个数的值,F(n-2) 表示第 n-2 个数的值。

换句话说,每个数都是前两个数之和。这就是斐波那契数列的特点,它在计算机科学和数学中有着广泛的应用。

11. 以下哪个函数声明在调用时可以传递二维数组的名字作为参数?
A. void BubbleSort(int a[3][4]);
B. void BubbleSort(int a[][]);
C. void BubbleSort(int * a[]);
D. void BubbleSort(int ** a);
答案:A
解析:略
12. 在 C++中,以下哪个关键字用来捕获异常( )
A. throw
B. catch
C. try
D. finally
答案:B
解析:关键字 catch 用于捕获异常并执行相应的异常处理代码块。
13. 在下列代码的横线处填写( ),可以使得输出是“20 10”。
A. int x, int y
B. int & x, int & y
C. int a, int b
D. int & a, int & b
答案:B
解析:使用指针变量,实现x,y输出值进行互换
14. 在下列代码的横线处填写( ),可以使得输出是“21”

A. i++
B. i += 2
C. i += 3
D. i |= 2
答案:B
解析:根据第一个for循环,算出a[0]=1,a[1]=2,a[2]=4,a[3]=8,a[4]=16,21=1+4+16,也就是a[0]+a[2]+[4],所以i+=2
15. 在下列代码的横线处填写( ),完成对有 n int 类型元素的数组 array 由小到大排序。

 

A. int j = i – 2; j >= 0; j--
B. int j = i - 1; j >= 0; j--
C. int j = 0; j < i - 1; j++
D. int j = 0; j < i; j++
答案:C
解析:略

二、判断题 (每题 2 分,共 20 分)

1. C++语言中的指针变量可以指向任何类型的数据。( )
答案:正确
解析:略
2. 在 C++语言中,函数的参数默认以地址传递方式进行传递。( )
答案:错误
解析:在C++语言中,默认情况下,函数的参数是以值传递方式进行传递的;

如果希望在函数内部修改原始参数的值,可以通过传递指针或引用来实现地址传递。

3. C++语言中的全局变量在整个程序的生命周期内都是有效的。( )
答案:正确
解析:略
4. 递推算法通常有初始值。( )
答案:正确
解析:略
5. 冒泡排序是一种稳定的排序算法。( )
答案:正确
解析:略
6. C++语言中,如果异常发生,但没有处理异常的代码,则程序会由于一直等待处理而死机。( )
答案:错误
解析:在C++语言中,如果异常发生但没有处理异常的代码,程序不会一直等待处理而死机。实际上,如果异常没有得到适当处理,程序会终止,并且可能会打印一些错误信息,如未处理的异常类型和调用堆栈信息。这可能会导致程序中止,但通常不会导致死机。
7. C++语言中的局部变量在函数调用结束后会被销毁。( )
答案:正确
解析:略
8. & && 都是 C++语言的运算符, * ** 也都是。( )
答案:错误
解析:&和&&都是运算符,分别表示按位与和逻辑与运算;* 是乘法运算符,而 ** 不是合法的运算符
9. 如果希望设计一个函数 xchg ,实现交换两个 int 变量的值,则它的声明可以写为 void xchg(int a, int b); 。( )
答案:错误
解析:

10. 已知数组 a 定义为 int a[100]; ,则赋值语句 a['0'] = 3; 会导致编译错误。( )
答案:错误
解析:在 C++ 中,数组的索引应该是整数类型,但字符字面值会被解释为字符的 ASCII 值。所以,a['0'] 实际上会被解释为 a[48],因为字符 '0' 对应的 ASCII 值是 48。如果您执行 a['0'] = 3;,它会将数组 a 中索引为 48 的位置赋值为 3。

三、编程题 (每题 25 分,共 50 分)

1. 绝对素数
如果一个两位数是素数,且它的数字位置经过对换后仍为素数,则称为绝对
素数,例如 13。给定两个正整数 A、B,请求出大于等于 A、小于等于 B 的所有
绝对素数。
【输入格式】
输入 1 行,包含两个正整数 A 和 B。保证 10<A<B<100。
【输出格式】
若干行,每行一个绝对素数,从小到大输出。
【样例输入】
11 20
【样例输出】
11
13
17
【参考代码】
#include <iostream>
using namespace std;

// 函数用于判断一个数是否为素数
bool is_prime(int num) {
    if (num < 2)
        return false;
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0)
            return false;
    }
    return true;
}

int main() {
    int a = 0, b = 0;
    cout << "请输入范围的上下界:" << endl;
    cin >> a >> b;
    
    cout << "在范围[" << a << ", " << b << "]内的循环素数:" << endl;
    for (int num = a; num <= b; num++) {
        if (is_prime(num)) {
            int reversed_num = (num % 10) * 10 + num / 10;
            if (is_prime(reversed_num))
                cout << num << endl;
        }
    }
    
    return 0;
}
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
【参考代码】
#include <bits/stdc++.h>
using namespace std;

int cube[21][21]; // 定义一个二维数组表示幻方

int main() {
    int n = 0; // 输入的维度
    cin >> n; // 读取输入的维度

    // 初始化二维数组
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            cube[i][j] = 0; // 清空正方形图表

    int x = 0, y = n / 2;
    cube[x][y] = 1; // 第 1 步,第一行正中填写 1

    for (int d = 2; d <= n * n; d++) {
        int nx = (x + n - 1) % n;
        int ny = (y + 1) % n; // 第 2 步,向右上移动一格

        if (cube[nx][ny] != 0) {
            nx = (x + 1) % n; // 第 3 步,如果第 2 步失败,向下移动一格
            ny = y;
        }

        cube[nx][ny] = d; // 填写下一个数字
        x = nx;
        y = ny;
    }

    // 输出幻方
    for (int i = 0; i < n; i++) {
        cout << cube[i][0];
        for (int j = 1; j < n; j++)
            cout << " " << cube[i][j];
        cout << endl;
    }

    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GESP C++ 四级样题卷 的相关文章

  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 是否可以使用 http url 作为 DirectShow .Net 中源过滤器的源位置?

    我正在使用 DirectShow Net 库创建一个过滤器图 该过滤器图通过使用 http 地址和 WM Asf Writer 来流式传输视频 然后 在网页上 我可以使用对象元素在 Windows Media Player 对象中呈现视频源
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • C:设置变量范围内所有位的最有效方法

    让我们来int举个例子 int SetBitWithinRange const unsigned from const unsigned to To be implemented SetBitWithinRange应该返回一个int其中所有
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 如果找不到指定的图像文件,显示默认图像的最佳方式?

    我有一个普通的电子商务应用程序 我将 ITEM IMAGE NAME 存储在数据库中 有时经理会拼错图像名称 为了避免 丢失图像 IE 中的红色 X 每次显示产品列表时 我都会检查服务器中是否有与该产品相关的图像 如果该文件不存在 我会将其
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K

随机推荐

  • go-zero&go web集成redis实战

    前言 上一篇 go zero go web集成JWT和cobra命令行工具实战 从零开始基于go zero搭建go web项目实战 03集成redis实战 源码仓库地址 源码 https gitee com li zheng treasur
  • 请确保在bios菜单中启用了磁盘的控制器

    进入 BIOSS 然后看看 启动里面是不是把硬盘启动关了 是的话 打开就好了
  • 目标检测入门:帧差法,光流法和背景减法

    概述 运动目标检测是指当监控场景中有活动目标时 采用图像分割的方法从背景图像中提取出目标的运动区域 运动目标检测技术是智能视频分析的基础 因为目标跟踪 行为理解等视频分析算法都是针对目标区域的像素点进行的 目标检测的结果直接决定着智能视觉监
  • C语言-位段详解

    1 位段的定义 位段是定义结构体 或联合体 中的成员变量所占的空间 单位是bit 含有位段的结构体 联合体 称为位段结构 2 位段的意义 能够节省空间 比如性别 2个bit位可以表示2 2 4种可能性 不需要一个整形32个bit位 3 位段
  • idea中快捷键Ctrl+Shift+F冲突

    Ctrl Shift F在idea中的作用是全文或全项目搜索某个词的使用 windows系统自带的微软输入法中简繁体切换的快捷键也是Ctrl Shift F 会导致冲突 如果对简繁体切换需求没那么大 建议将输入法的快捷键关闭 具体操作为 在
  • 三阶矩阵求特征值的快速算法

    一般的三阶矩阵求特征值其实是解析不了的 因为特征方程对应的是三次方程 对于一般的三次方程 是很难求解的 要想方程有三个整数根 并且能够不用完全暴力展开三阶行列式这样的矩阵实际是很特殊的 1 某一行有两个0的情况是最好算的情况 分块上 下三角
  • 2023.7.13

    代码讲解01 PTA 7 38 等边三角形面积 数学基础对于程序设计能力而言很重要 对于等边三角形面积 请选择合适的方法计算之 输入格式 测试数据有多组 处理到文件尾 每组测试输入1个实数表示等边三角形的边长 输出格式 对于每组测试 在一行
  • 开源考试系统

    项目介绍 学之思开源考试系统是一款 java vue 的前后端分离的考试系统 主要优点是开发 部署简单快捷 界面设计友好 代码结构清晰 支持web端和微信小程序 能覆盖到pc机和手机等设备 支持多种部署方式 集成部署 前后端分离部署 doc
  • 为什么推荐编程初学者学习C(C++)/Python?

    人类走进信息化时代 掌握计算机编程是一项不错的技能 培养逻辑思维 解决现实中实际问题的能力 学会将计算机作为人类思想和能力的延展性工具 计算机行业寒冬 但AI和互联网仍然是未来发展的大趋势 学习C语言和Python的区别在哪 为什么选这俩
  • (CVPR2019)图像语义分割(18) DANet-集成双路注意力机制的场景分割网络

    论文地址 Dual Attention Network for Scene Segmentation 工程地址 github链接 1 介绍 该论文提出新型的场景分割网络DANet 利用自注意力机制进行丰富语义信息的捕获 在带有空洞卷积的FC
  • 详解BGP 双平面

    拓扑描述 上平面为A 面 AS1 下平面为B 面 AS2 左边用户群 AS3 右边用户群 AS4 组成两个平面的原因 两个城市之间的数据交互 分为业务流量和办公流量 于此同时 希望业务流量走 上面 办公流量走下面 流量的组成会很清晰 同时两
  • 用windows系统做服务器配置,windows系统做服务器配置

    windows系统做服务器配置 内容精选 换一换 迁移前 您需要设置目的端服务器 该目的端用来接收源端的数据 同时您也可以使用该目的端进行迁移测试和启动目的端 只有 迁移阶段 gt 迁移实时状态 为时才可设置目的端 进入 主机迁移服务 页面
  • Windows10神州网信政府版的配置修改

    Windows10神州网信政府版初始安装完成后 在有些界面上呈现 某些设置已隐藏或由你的组织管理 这就意味着有很多属性并不能由使用者修改 这对用户来说很不不方便 下面是经常用到的一些属性修改 1 修改屏幕保护属性 按Win键 R键调出运行框
  • 排序算法之分治排序

    归并排序是基于分治法实现的 归并排序将待排序的元素序列分为两个长度相等的子序列 为每一个子序列排序 然后再将它们合并成一个序列 合并两个子序列的过程称为两路归并 在执行两路归并算法时 先把待归并元素序列L1复制到辅助数组L2中 再从L2归并
  • Selenium隐藏浏览器特征

    Selenium隐藏浏览器特征 Selenium特征 1 CDP 2 stealth min js 3 undetected chromedriver 4 操作已开启的浏览器 4 常见的隐藏Selenium特征的方法 4 1 修改navig
  • hadoop集群优化(四):开启历史任务服务器

    文章目录 说明 分享 操作 修改配置 同步配置 启动历史服务器 查看jobHistory 总结 说明 hadoop支持历史服务器功能 默认关闭 开启后 通过web可查看完成运行的MapReduce做的的信息记录 如Map和Reduce使用情
  • Python进阶学习(一)

    背景 在编程语言的大背景下 Python普遍被认为是一门易上手的脚本语言 而随着Python的应用越来越广泛 仅仅停留在会跑Python程序是不够的 本篇专栏主要记录一些高阶的用法以及Python语言的一些机制 Python语言掌握需要具备
  • matlab改进秃鹰算法IBES 可直接运行 包括23个测试函数 提供与原算法对比~Matlab

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 matlab改进秃鹰算法IBES 可直接运行 包括23个测试函数 提供与原算法对比 Matlab 部分源码 清空环境变量 warning off 关闭报警信息 close
  • 威联通qnap SMB速度慢 只有30M、50M的解决方法

    首先 保证NAS与电脑处于千兆以上的局域网中 其次 然后就没有然后了 mmp 研究了一晚上 客服一问三不知 补充一下 有可能这个方法改完无效 这时候你先把 限制匿名用户访问 选择启动 默认是启动严格 然后把否决文件再勾上 然后再取消掉 目前
  • GESP C++ 四级样题卷

    一 单选题 每题 2 分 共 30 分 1 在 C 中 指针变量的大小 单位 字节 是 A 2 B 4 C 8 D 与编译器有关 答案 D 解析 在大多数现代的 32 bit 和 64 bit 的 C 编译器中 指针变量的大小通常是 4 字