国家二级C++机试(操作题)模拟试卷655
基本操作题
1.请打开考生文件夹下的解决方案文件projI,该工程中包含程序文件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:
Door(int num){
//ERROR *******found*******
num=this一>num;
closed=locked=true:
}
bool isClosed()const{return closed;)
//门关着时返回true,否则返回false
bool isOpened()const{return !closed;}
//门开着时返回true,否则返回false
bool isLocked()const(Eeturn locked;}
//门锁着时返回true,否则返回false
bool isUnlocked()const{return!locked;}//门未锁时返回true,否则返回false
void open()( //开门
cout<<endl<<’’打开’’<<num<<”号门…”;
//ERROR *******found*******
if(closed)
cout<<”门是开着的,无须再开门。”;
else if(10cked)
cout<<”门是锁着的,打不开。”;
elsef
closed:false;
tout<<”门打开了。”;
}
}
void close(){//关门
cout<<endl<<’’关上’’<<hum<<”号门…”;
if(closed)
cout<<II『]是关着的,无须再关门。”;
elsef
closed=true;
cout<<”门关上了。”;
}
}
//ERROR *******found*******
void lock()const{//锁门
tout<<endl<<-·锁上”<<nom<<”号门…”;
if flocked)
cout<<”门是锁着的,无须再锁门。”;
elsef
if(!closed){
Gout<<”先关门…”;
closed=true;
}
locked:true;
cout<<”门锁上了。”;
}
}
void unlock(){//开锁
tout<<endl<<”开”<<nHm<<”号门的锁…”;
if(!locked)
cout<<”门没有上锁,无须再开锁。”;
else{
locked=false;
cout<<”锁开了。”;
}
}
};
int main(){
Door door(503)j
door.open();
door.unlock()j
door.open();
door.open();
door.lock();
return 0;
}
(1)this->num=num;
(2)if(!closed)
(3)void lock(){
解析:(1)主要考查考生对this指针的掌握,在构造函数中this指针指向的是当前类,因此要给num赋值使用语句this->num=num完成。
(2)主要考查考生对if语句的掌握,先看类的私有成员中关于closed的定义:bool closed; // true表示门关着。再看下一条语句:cout<<\\
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,该工程中包含一个程序文件main.cpp,其中有日期类Date、人员类Person及排序函数sortByName和主函数main的定义。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义和函数定义。此程序的正确输出结果应为:
按姓名排序
排序前
张三男 出生日期:1978年4月20日
王五女出生日期:1965年8月3日
杨六女出生日期:1965年9月5日
李四男 出生日期:1973年5月30日
排序后:
李四男出生日期:1973年5月30日
王五女出生日期:1965年8月3日
杨六女出生日期:1965年9月5日
张三男出生日期:1978年4月20日
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include<iostream>
using namespace std;
class Date{//日期类
int year,month,day;//年、月、日
public:
Date(int year,int month,int day):year(year),month
(month),day(day){ }
int getYear()const {return year;}
int getMonth()const{return month;}
int getDay()const{return day;}
};
class Person{//人员类
char name[14];//姓名
bool is male;//性别.为true时表示男性
Date birth date;//出生日期
public:
Person(char}n
本文档预览:3600字符,共8864字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载