问答题 请使用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状态时,输出:先关门…。