请使用“答题”菜单或使用VC6打开考生文件夹proj1
请使用“答题”菜单或使用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; // 门号
bool 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
bool 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( ) const { // 锁门
cout << endl << "锁上" << num << "号门...";
if(locked)
cout << "门是锁着的,无须再锁门。";
else{
// ERROR ********* found *********
if(closed){
cout<<"先关门...";
closed = true;
}
locked = true;
cout << "门锁上了。";
}
}
void unlock( ) { // 开锁
cout<< endl << "打开" << num << "号门的锁...";
if ( ! locked )
cout << "门没有上锁,无须再开锁。";
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) { / if(!isClosed) { / if (isOpened()) {
解析
第1处将lock改为locked,因为锁门的函数表达式应为locked,并且下面的锁门的函数也是locked与之对应。
第2处考查的是const函数,该类方法改变了类的属性,不应该用const,应该删掉成员函数的限定符const,将void open()const{}改成void open(){}。
第3处考查的是逻辑性,因为true表示的是门关着,所以表示门开着应该与之相反,所以应该改为if(!closed) {或if(!isClosed) {或if(isOpened()) {。