个人主页:Lei宝啊
愿所有美好如期而遇
选择题
第一道
下面对析构函数的正确描述是()
- A. 系统不能提供默认的析构函数
- B. 析构函数必须由用户定义
- C. 析构函数没有参数
- D. 析构函数可以设置默认参数
解析:
正确描述析构函数的是:
C. 析构函数没有参数
解释:
A. 系统不能提供默认的析构函数 - 这是不正确的。如果用户没有为类定义析构函数,编译器会自动生成一个默认的析构函数。
B. 析构函数必须由用户定义 - 这也是不正确的。用户可以选择定义析构函数,但如果不定义,编译器会提供一个默认的析构函数。
C. 析构函数没有参数 - 这是正确的。析构函数不接受任何参数,并且它的名称始终是在类名前加上一个波浪符(~)。
D. 析构函数可以设置默认参数 - 这是不正确的。析构函数不接受任何参数,因此不能为它设置默认参数。
所以,正确答案是 C。
第二道
下列程序的输出结果:
#include <iostream>
using namespace std;class A
{
public:void print(){cout << "A:print()";}
};class B: private A
{
public:void print(){cout << "B:print()";}
};class C: public B
{
public:void print(){A:: print();}
};int main()
{C b;b.print();
}
- A. A:print()
- B. B:print()
- C. 编译出错
解析:
因为B私有继承A,所以A中的方法成为B的私有方法,再使C继承B,即使是公有继承,但是私有成员被继承下来也是不可见的,所以不可以显式调用,但可以通过调用B的方法间接调用。
所以本题答案为C
编程题
杨辉三角的变形https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43?tpId=37&tqId=21276&ru=/exam/oj
找到规律即可,用空间存会超限。
#include <iostream>
using namespace std;int main()
{int n = 0;while(cin >> n){if(n == 1 || n == 2) cout << -1 << endl;else if(n % 4 == 3 || n % 4 == 1) cout << 2 << endl;else if(n % 4 == 0) cout << 3 << endl;else cout << 4 << endl;}return 0;
}
// 64 位输出请用 printf("%lld")