【单选题】(每题2分)
1、以下不属于计算机输出设备的有?( )
A、麦克风 B、音箱 C、打印机 D、显示器
正确答案:A
试题解析:麦克风是属于计算机的输入设备。
2、小明想了一个 1~100 之间的整数。你可以做多次猜测,每次猜测之后,如果你没有猜中,小明会告诉你,你猜的数比他想的数大还是小。你希望你在运气最坏的情况下花费最少的次数猜中,请问你运气最坏的情况下会猜几次?( )(包括最后猜中的那次)
A、5 B、6 C、7 D、100
正确答案:C
试题解析:根据二分查找算法的思想,为了在运气最坏的情况下最少次数猜中,我们可以每次将搜索范围缩小一半。
对于N个数字,最多的猜测次数则是LogN。
本例中,因为2的6次方是64,而2的7次方128,所以最多需要7次可以猜中。
3、关于分治算法,下列说法错误的是?( )
A、分治算法的核心思想是分而治之,即把问题转化为多个规模更小的子问题求解 B、分治算法可以不使用递归实现
C、分治算法的时间复杂度是 O(logN),其中 N 表示问题的规模
D、二分法、快速排序等算法都是典型的使用分治思想的算法
正确答案:C
试题解析:选项A是分治算法的核心思想,是正确的。
选项B,虽然分治算法经常用递归来实现,但也可以使用迭代或循环等方式实现。
选项C,分治算法的时间复杂度通常是 O(n log n) 或者 O(n^2),这取决于具体的问题和算法设计。只有在对半分割的情况下,时间复杂度才是 O(logN)。
选项D,二分法、快速排序等算法都是典型的使用分治思想的算法。
4、下面关于C++类的说法中,正确的是?( )
A、派生类不能和基类有同名成员函数,因为会产生歧义
B、派生类可以和基类有同名成员函数,派生类覆盖基类的同名成员函数
C、派生类可以和基类有同名成员函数,但是否覆盖同名成员函数需要取决于函数参数是否一致
D、C++中派生类不继承基类的任何成员函数
正确答案:C
试题解析:A选项和B选项是错误的,因为当派生类和基类有同名的成员函数时,如果函数参数一致,那么派生类会覆盖基类的同名函数,不会产生歧义。
D选项是错误的,因为C++中派生类是可以继承基类的成员函数的。
5、关于下面C++代码说法错误的是?( )
#include <iostream>
#include <string>
using namespace std;
class Pet {
public:
string kind;
int age;
Pet(string _kind, int _age):kind(_kind), age(_age) {}
};
class Dog : public Pet {
public:
string color;
Dog(string _kind, int _age, string _color):Pet(_kind, _age), color(_color) {}
};
int main() {
auto dog = Dog("dog", 3, "white");
cout << "kind: " << dog.kind << endl;
cout << "age: " << dog.age << endl;
cout << "color: " << dog.color << endl; // 输出行A
return 0;
}
A、Pet 类是基类,Dog 类是子类 B、Dog 类的构造函数中,将自动调用 Pet 类的构造函数 C、dog 是 Dog 类的实例
D、最后一行(即输出行A)输出代码会报错,因为 Pet 类中没有成员变量 color
正确答案:D
试题解析:D选项是错误的。虽然Pet类没有color成员,但是Dog类有color