问答题
请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1。此工程中包含程序文件main.cpp,其中有类Door(“门”)和主函数main的定义。程序中位于每个“//ERROR ********found********”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
打开503号门…门是锁着的,打不开。
打开503号门的锁…锁开了。
打开503号门…门打开了。
打开503号门…门是开着的,无须再开门。
锁上503号门…先关门…门锁上了。
注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。
#include <iostream>
using namespace std;
class Door{
int num; //门号
boom closed; //true表示门关着
bool locked; //true表示门锁着
public:
// ERROR ********* found*********
Door (int n): num(n), closed (true), lock (true) { }
bool isClosed () const { return closed; } //门关着时返回true,否则返回false
bool isOpened () const { return ! closed; } //门开着时返回true ,否则返回false
bool isLocked () const { return locked; } //门锁着时返回true,否则返回false
boom isUnlocked () const { return ! locked; } //门未锁时返回true,否则返回false
//ERROR ********* found*********
void open()const{ //开门
cout << endl << "打开" << num << "号门...";
if(! closed)
cout << "门是开着的,无须再开门。";
else if (locked)
cout << "门是锁着的,打不开。";
else{
closed = false;
cout << "门打开了。";
}
}
void close () { //关门
cout << endl <<"关上" << num <<"号门...";
if (closed)
cout << "门是关着的,无须再关门。";
else{
closed=true;
cout << "门关上了。";
}
}
void lock() { //锁门
cout << endl << "锁上" << num << "号门...";
if (locked)
cout << "门是锁着的,无须再锁门。";
else{
// ERROR ********* found*********
if (closed) {
cout << "先关门...";
closed = true;
}
locked = true;
cout << "门锁上了。";
}
}
void unlock () { //开锁
cour << endl << "打开" << num << "号门的锁...";
if(! locked)
else{
locked = false;
cout << "锁开了。";
}
}
};
int main () {
Door door (503);
door.open ();
door.unlock ();
door.open ();
door.open ();
door.lock ();
return 0;
}
【正确答案】(1)Door(int n):num(n), closed(true), locked(true){}
(2)void open(){//开门
(3)if(!closed){
【答案解析】[考点] 本题考查Door类,其中涉及bool型私有成员、构造函数和成员函数。
[解析] (1)主要考查考生对构造函数的掌握,使用成员列表初始化,注意私有成员是locked,而不是lock。
(2)主要考查考生对const函数的掌握,函数体内有语句closed=false,使成员值发生改变,因此不能使用const。
(3)结合上下文即可得知当门不处于closed状态时,输出:先关门…。