#G1057. 客观题

客观题

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

  1. 近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( )

{{ select(1) }}

  • 输入
  • 输出
  • 控制
  • 记录
  1. 如果 aabb 均为 int 类型的变量,且 bb 的值不为 00,那么下列能正确判断 “aabb33 倍” 的表达式是( )。

{{ select(2) }}

  • (a >> 3 == b)
  • (a - b) % 3 == 0
  • (a / b == 3)
  • (a == 3 * b)
  1. 以下不属于面向对象程序设计语言的是( )。

{{ select(3) }}

  • C\tt C++
  • Python\tt Python
  • Java\tt Java
  • C\tt C
  1. 下面有关 C\tt C++ 类定义的说法,错误的是( )。

{{ select(4) }}

  • C\tt C++ 类实例化时,会执行构造函数
  • C\tt C++ 自定义类可以通过定义构造函数实现自动类型转换
  • C\tt C++ 自定义类可以通过重载 >< 等运算符实现大小比较
  • C\tt C++ 自定义类可以包含任意类型的成员
  1. 有关下面 C\tt C++ 代码的说法,错误的是( )。

    #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; 不会报错,将正常输出 ABC\tt ABC
  • 66 行代码的 data\tt dataMyStr\tt MyStr 类的成员变量
  • 代码 MyStr st("ABC"); 不会报错,将执行构造函数
  • 以上说法均没有错误
  1. 下列关于命名空间的说法错误的是( )。

{{ select(6) }}

  • 命名空间可以嵌套,例如 namespace A { namespace B { int i;}}
  • 命名空间只可以在全局定义
  • 命名空间中可以存放变量和函数
  • 如果程序中使用了 using 命令同时引用了多个命名空间,并且命名空间中存在相同的函数,会出现程序运行错误
  1. 有关下面 C\tt C++ 代码的说法,正确的是( )。

    #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) }}

  • 这段代码不能正常运行
  • ManyData\tt ManyData 类可用于构造队列(Queue\tt Queue)数据结构
  • 在上面代码环境,代码 cout<< myData.__data[0] << endl; 可以增加到代码 main\tt main 函数末尾(return 0; 之前),且不会导致报错
  • 可以为 ManyData\tt ManyData 类的 push()\tt push()pop()\tt pop() 函数增加异常处理代码,否则在使用 ManyData\tt ManyData 类时可能导致运行时错误或逻辑错误(不一定局限于上述代码中的 main\tt main 函数)
  1. 有关下面 C\tt C++ 代码的说法,错误的是( )。

    #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) }}

  • MoreData\tt MoreData 类可用于构造队列(Queue\tt Queue)数据结构
  • 代码第 2929 行,连续 push()\tt push() 的用法将导致编译错误
  • __data\tt \_\_dataMoreData\tt MoreData 类的私有成员,只能在类内访问
  • 以上说法均没有错误
  1. 某内容仅会出现 ABCDEFG\tt ABCDEFG,其对应的出现概率为 0.400.400.300.300.150.150.050.050.040.040.030.030.030.03,如下图所示。按照哈夫曼编码规则,假设 B\tt B 的编码为 1111,则 D\tt D 的编码为( )。

{{ select(9) }}

  • 1001010010
  • 1001110011
  • 1011110111
  • 1000110001
  1. 下面有关格雷码的说法,错误的是( )。

{{ select(10) }}

  • 在格雷码中,任意两个相邻的代码只有一位二进制数不同
  • 格雷码是一种唯一性编码
  • 在格雷码中,最大数和最小数只有一位二进制数不同
  • 格雷码是一种可靠性编码
  1. 有关下图的二叉树,说法正确的是( )。

{{ select(11) }}

  • 既是完全二叉树也是满二叉树
  • 既是二叉搜索树也是平衡二叉树
  • 非平衡二叉树
  • 以上说法都不正确
  1. NN 个节点的二叉搜索树,其查找的平均时间复杂度为( )。

{{ select(12) }}

  • O(1)O(1)
  • O(N)O(N)
  • O(logN)O(\log N)
  • O(N2)O(N^2)
  1. 青蛙每次能跳 1122 步。下面是青蛙跳到第 NN 步台阶 C\tt C++ 实现代码。该段代码采用的算法是( )。

    void jumpFrog(int N) {
    	if (N <= 3)
    		return N;
    
    	return jumpFrog(N - 1) + jumpFrog(N - 2);
    }
    

{{ select(13) }}

  • 递推算法
  • 贪心算法
  • 动态规划算法
  • 分治算法
  1. NN 个节点的双向循环链,在其中查找某个节点的平均时间复杂度是( )。

{{ select(14) }}

  • O(1)O(1)
  • O(N)O(N)
  • O(logN)O(\log N)
  • O(N2)O(N^2)
  1. 关于 C\tt C++ 语言,以下说法不正确的是( )。

{{ select(15) }}

  • 若对象被定义为常量,则它只能调用以 const\tt const 修饰的成员函数
  • 所有的常量静态变量都只能在类外进行初始化
  • 若类 A\tt A 的对象 aa 是类 B\tt B 的静态成员变量,则 aamain()\tt main() 函数调用之前应被初始化
  • 静态全局对象、常量全局对象都是在 main\tt main 函数调用之前完成初始化,执行完 main\tt main 函数后被析构

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

  1. TCP/IP\tt TCP/IP 的传输层的两个不同的协议分别是 UDP\tt UDPTCP\tt TCP。( )

{{ select(16) }}

  • 正确
  • 错误
  1. 5 G\tt 5\ G 网络中,5 G\tt 5\ G 中的 G\tt G 表示 Gigabytes/s\tt Gigabytes/s,其中 1 GB=1024 MB\tt 1\ GB = 1024\ MB。( )

{{ select(17) }}

  • 正确
  • 错误
  1. 在面向对象中,类是对象的实例。( )

{{ select(18) }}

  • 正确
  • 错误
  1. C\tt C++ 类的定义中,使用 static\tt static 修饰符定义的静态成员被该类的所有对象共享。( )

{{ select(19) }}

  • 正确
  • 错误
  1. C\tt C++ 类的定义中,可以定义初始化函数或运算符函数等。( )

{{ select(20) }}

  • 正确
  • 错误
  1. DFS\tt DFS 是深度优先算法的英文简写。( )

{{ select(21) }}

  • 正确
  • 错误
  1. 哈夫曼编码是一种有损压缩算法。( )

{{ select(22) }}

  • 正确
  • 错误
  1. 有些算法或数据结构在 C/C\tt C/C++ 语言中使用指针实现,一个典型的例子就是链表。因此,链表这一数据结构在 C/C\tt C/C++ 语言中只能使用指针来实现。( )

{{ select(23) }}

  • 正确
  • 错误
  1. 如果节点数为 NN,广度搜索算法的最差时间复杂度为 O(N)O(N)。( )

{{ select(24) }}

  • 正确
  • 错误
  1. 二叉搜索树的左右子树也是二叉搜索树。( )

{{ select(25) }}

  • 正确
  • 错误