class Animal {
public:
virtual void speak() {
cout << "Animal ";
}
virtual ~Animal() = default;
};
class Cat : public Animal {
public:
void speak() override {
cout << "Cat ";
}
};
int main() {
Animal *p = new Cat();
p->speak();
delete p ;
return 0 ;
}
2分
登录后查看选项
02
下列代码中,横线处应填写(),才能正确调用基类的带参数构造函数。
class Machine {
protected :
string id ;
public:
Machine(string s) : id(s) {}
};
class Robot : public Machine {
int level;
public:
Robot(string s , int n) :___________, level(n) {}
};
2分
登录后查看选项
03
下列代码执行后的输出顺序是()。
class Base {
public:
Base() {
cout << "B ";
}
virtual ~Base() {
cout << "~B ";
}
};
class Derived : public Base {
public:
Derived() {
cout << "D ";
}
~Derived() {
cout << "~D ";
}
};
int main() {
Base *p = new Derived();
delete p ;
return 0 ;
}
2分
登录后查看选项
04
下列代码执行后的输出结果是()。
stack<int> s ;
queue<int> q ;
for (int i = 2; i <= 6; i += 2) {
s .push(i);
q .push(i);
}
s .pop();
q .pop();
cout << s.top() << " " << q .front();
2分
登录后查看选项
05
下面循环队列采用“空出一个位置”的方式区分队空和队满。横线处应填写()。
const int MAXN = 8;
int data [MAXN];
int front = 0 , rear = 0 ;
bool full() {
return __________;
}
vector<string> gray(int n) {
vector<string> ans = {"0 ", "1 "};
for (int bit = 2; bit <= n ; ++bit) {
int oldSize = ans .size();
for (int i = oldSize - 1; i >= 0 ; --i)
ans .push_back( ____________);
for (int i = 0 ; i < oldSize ; ++i)
ans [i] = "0 " + ans [i];
}
return ans ;
}
2分
登录后查看选项
13
下面代码计算走到第n 级台阶的方法数,每次可以走1 级或2 级。横线处应填写()。
int ways(int n) {
if (n <= 2)
return n ;
vector<int> dp(n + 1);
dp [1] = 1;
dp [2] = 2;
for (int i = 3 ; i <= n ; ++i)
dp[i] = _____________;
return dp [n];
}
2分
登录后查看选项
14
下面代码求从包含非负元素的数组中选择若干个互不相邻元素所能得到的最大和。横线处应填写()。
int maxSum(vector<int> &a) {
int n = a .size();
if (n == 0)
return 0 ;
if (n == 1)
return a [0];
vector<int> dp(n);
dp [0] = a [0];
dp [1] = max (a [0], a [1]);
for (int i = 2; i < n ; ++i)
dp[i] = _____________;
return dp [n - 1];
}
2分
登录后查看选项
15
下面是一维数组实现的0/1 背包。内层循环必须从大到小枚举容量,主要原因是()。
for (int i = 0 ; i < n ; ++i) {
for (int w = W; w >= weight [i]; --w) {
dp [w] = max (dp [w], dp [w - weight [i]] + value [i]);
}
}
2分
登录后查看选项
判断题 共10道
16
下列代码可以正常编译,因为编译器会自动为Student 类生成一个无参数构造函数。
class Student {
public:
Student(int x) {
age = x;
}
private:
int age ;
};
int main() {
Student s ;
}
2分
登录后查看选项
17
下列代码合法,因为派生类可以直接访问基类的私有成员value。
class Base {
private:
int value = 10;
};
class Child : public Base {
public:
int get() {
return value ;
}
};