#G1057. 客观题
客观题
一、单选题(每题 2 分,共 30 分)
- 近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( )
{{ select(1) }}
- 输入
- 输出
- 控制
- 记录
- 如果 和 均为
int
类型的变量,且 的值不为 ,那么下列能正确判断 “ 是 的 倍” 的表达式是( )。
{{ select(2) }}
(a >> 3 == b)
(a - b) % 3 == 0
(a / b == 3)
(a == 3 * b)
- 以下不属于面向对象程序设计语言的是( )。
{{ select(3) }}
- ++
- 下面有关 ++ 类定义的说法,错误的是( )。
{{ select(4) }}
- ++ 类实例化时,会执行构造函数
- ++ 自定义类可以通过定义构造函数实现自动类型转换
- ++ 自定义类可以通过重载
>
、<
等运算符实现大小比较 - ++ 自定义类可以包含任意类型的成员
-
有关下面 ++ 代码的说法,错误的是( )。
#include <iostream> #include <string> using namespace std; class MyStr { string data; public: MyStr(string _data) : data(_data) {} }; int main() { MyStr st("ABC"); cout << st << endl; return 0; }
{{ select(5) }}
- 代码
cout << st << endl;
不会报错,将正常输出 - 第 行代码的 是 类的成员变量
- 代码
MyStr st("ABC");
不会报错,将执行构造函数 - 以上说法均没有错误
- 下列关于命名空间的说法错误的是( )。
{{ select(6) }}
- 命名空间可以嵌套,例如
namespace A { namespace B { int i;}}
- 命名空间只可以在全局定义
- 命名空间中可以存放变量和函数
- 如果程序中使用了
using
命令同时引用了多个命名空间,并且命名空间中存在相同的函数,会出现程序运行错误
-
有关下面 ++ 代码的说法,正确的是( )。
#include <iostream> using namespace std; class ManyData { int * __data; int head, tail, capacity; public: ManyData(int cap) { capacity = cap; __daya = new int[capacity]; head = tail = 0; } void push(int val) { __data[tail++] = val; } int pop() { return __data[--tail]; } int size() { return tail - head; } }; int main() { auto myData = ManyData(100); myData.push(1); myData.push(2); myData.push(3); myData.push(100); cout << myData.size() << endl; cout << myData.pop() << endl; return 0; }
{{ select(7) }}
- 这段代码不能正常运行
- 类可用于构造队列()数据结构
- 在上面代码环境,代码
cout<< myData.__data[0] << endl;
可以增加到代码 函数末尾(return 0;
之前),且不会导致报错 - 可以为 类的 、 函数增加异常处理代码,否则在使用 类时可能导致运行时错误或逻辑错误(不一定局限于上述代码中的 函数)
-
有关下面 ++ 代码的说法,错误的是( )。
#include <iostream> using namespace std; class MoreData { int * __data; int head, tail, capacity; public: MoreData(int cap) { capacity = cap; __data = new int[capacity]; head = tail = 0; } MoreData & push(int val) { __data[tail++] = val; return *this; } int pop() { return __data[head++]; } int size() { return tail - head; } }; int main() { auto myData = MoreData(100); myData.push(1); myData.push(2); myData.push(3); myData.push(11).push(12).push(13); cout << myData.pop() << endl; return 0; }
{{ select(8) }}
- 类可用于构造队列()数据结构
- 代码第 行,连续 的用法将导致编译错误
- 是 类的私有成员,只能在类内访问
- 以上说法均没有错误
-
某内容仅会出现 ,其对应的出现概率为 、、、、、、,如下图所示。按照哈夫曼编码规则,假设 的编码为 ,则 的编码为( )。
{{ select(9) }}
- 下面有关格雷码的说法,错误的是( )。
{{ select(10) }}
- 在格雷码中,任意两个相邻的代码只有一位二进制数不同
- 格雷码是一种唯一性编码
- 在格雷码中,最大数和最小数只有一位二进制数不同
- 格雷码是一种可靠性编码
-
有关下图的二叉树,说法正确的是( )。
{{ select(11) }}
- 既是完全二叉树也是满二叉树
- 既是二叉搜索树也是平衡二叉树
- 非平衡二叉树
- 以上说法都不正确
- 个节点的二叉搜索树,其查找的平均时间复杂度为( )。
{{ select(12) }}
-
青蛙每次能跳 或 步。下面是青蛙跳到第 步台阶 ++ 实现代码。该段代码采用的算法是( )。
void jumpFrog(int N) { if (N <= 3) return N; return jumpFrog(N - 1) + jumpFrog(N - 2); }
{{ select(13) }}
- 递推算法
- 贪心算法
- 动态规划算法
- 分治算法
- 个节点的双向循环链,在其中查找某个节点的平均时间复杂度是( )。
{{ select(14) }}
- 关于 ++ 语言,以下说法不正确的是( )。
{{ select(15) }}
- 若对象被定义为常量,则它只能调用以 修饰的成员函数
- 所有的常量静态变量都只能在类外进行初始化
- 若类 的对象 是类 的静态成员变量,则 在 函数调用之前应被初始化
- 静态全局对象、常量全局对象都是在 函数调用之前完成初始化,执行完 函数后被析构
二、判断题(每题 2 分,共 20 分)
- 的传输层的两个不同的协议分别是 和 。( )
{{ select(16) }}
- 正确
- 错误
- 网络中, 中的 表示 ,其中 。( )
{{ select(17) }}
- 正确
- 错误
- 在面向对象中,类是对象的实例。( )
{{ select(18) }}
- 正确
- 错误
- 在 ++ 类的定义中,使用 修饰符定义的静态成员被该类的所有对象共享。( )
{{ select(19) }}
- 正确
- 错误
- 在 ++ 类的定义中,可以定义初始化函数或运算符函数等。( )
{{ select(20) }}
- 正确
- 错误
- 是深度优先算法的英文简写。( )
{{ select(21) }}
- 正确
- 错误
- 哈夫曼编码是一种有损压缩算法。( )
{{ select(22) }}
- 正确
- 错误
- 有些算法或数据结构在 ++ 语言中使用指针实现,一个典型的例子就是链表。因此,链表这一数据结构在 ++ 语言中只能使用指针来实现。( )
{{ select(23) }}
- 正确
- 错误
- 如果节点数为 ,广度搜索算法的最差时间复杂度为 。( )
{{ select(24) }}
- 正确
- 错误
- 二叉搜索树的左右子树也是二叉搜索树。( )
{{ select(25) }}
- 正确
- 错误