请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程pmj1。此工程中包含程序文件mmn.cpp,其中有类Door(“门”)和主函数main的定义。程序中位于每个 “//ERROR**********found**********”之后的____

admin2020-10-21  21

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程pmj1。此工程中包含程序文件mmn.cpp,其中有类Door(“门”)和主函数main的定义。程序中位于每个
“//ERROR**********found**********”之后的________行语句有错误,请加以改正。改正后程序的输出结果应为:
打开503号门…门是锁着的,打不开。
打开503号门的锁…锁开了。
打开503号门…门打开了。
打开503号门…门是开着的,无须再开门。
锁上503号门…先关门…门锁上了。
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include
usingnamespacestd;
clasSDoor{
inthum;//门号
boolclosed;//true表示门关着
boollocked;//true表示门锁着
public:
//ERROR*********found*********
Door(intn):num(n),closed(true),
lock(true){}
boolisClosed()const{return
closed;}
//门关着时返回true,否则返回false
boolisOpened()const{return!
closed;}
//门开着时返回true,否则返回false
boolisLocked()const{return
locked;}
//门锁着时返回true,否则返回false
boolisUnlocked()COnSt{return!
locked;}
//门未锁时返回true,否则返回false
//ERROR*********found*********
voidopen()const{//开门cout<cout<<"门是开着的,无须再开门。";
elseif(locked)
tout<<"门是锁着的,打不开。";
else{
closed=false;
cout<<"门打开了。";
}
}
voidclose(){//关门
cout<if(closed)
cout<<"门是关着的,无须再关门。";
else{
closed=true;
tout<<"门关上了。";
  }
}
voidlock(){//锁门
cout<if(10cked)
cout<<"门是锁着的,无须再锁门。";
else{
//ERROR*********found*********
if(closed){
cout<<"先关门…";
closed=true;
}
locked=true;
cout<  }
}
voidunlock(){//开锁
cout<if(!locked)
cout<<"门没有上锁,无须再开锁。";
else{
locked=false;
cout<<--锁开了。";
    }
  }
};
intmain(){
Doordoor(503);
door.open();
door.unlock();
door.open();
door.open();
door.lock();
return0;
}

选项

答案(1)Door(int n) : num(n), closed(true), locked(true) {} (2)void open(){ // 开门 (3)if(!closed){

解析 (1)主要考查考生对构造函数的掌握,使用成员列表初始化,注意私有成员是locked,而不是lock。
(2)主要考查考生对const函数的掌握,函数体内有语句closed=false,使成员值发生改变,因此不能使用const。
(3)结合上下文当门不处于closed状态时,输出:先关门…。
转载请注明原文地址:https://kaotiyun.com/show/jyyp777K
0

最新回复(0)