国家二级C++机试(操作题)模拟试卷490
基本操作题
1.请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,该工程中包含程序文件main.cpp,其中有类Door(“门”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
打开503号门…门是锁着的,打不开。
打开503号门的锁…锁开了。
打开503号门…门打开了。
打开503号门…门是开着的,无须再开门。
锁上503号门…先关门…门锁上了。
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#inClude
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{return locked;}
//门锁着时返回true,否则返回false
bool isUnlocked()COnSt{return!locked;}
//门未锁时返回true,否则返回false
void open(){ //开门
cout<<endl<<\\
(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.使用Ve6打开考生文件夹proj2下的工程proj2。其中在编辑窗口内显示的主程序文件中定义有类XBase和XDerived,以及主函数main。程序文本中位于每行”//************found************下面的一行内有一处或多处下划线标记,请在每个下划线标记处填写合适的内容,并删除掉下划线标记。经修改后运行程序,得到的输出结果为:s=25
#include
using namespace std;
Class XBase
{
private:
int mem1,mem2;
public:
//*****found*****
XBase(int m1=0,int m2=0):mem1(m1),_________()
//*****found*****
virtual int__________
};
//*****found*****
class XDerived:_________
{
private:
int mem3;
public:
XDerived():XBase(),mem3(0){}
//*****found*****
XDerived(int m1,int m2,
int m3):__________{}
int sum(){return XBase::
slim()+mem3;}
};
void main()(
XDerived b(3,4,5);
XBase a(6,7),*pb=&b;
int s=pb->SLIm()+a.sum();
cout<<\\
(1)mem2(m2)
(2)sum(){return mem1+mem2;}
(3)public XBase
(4)XBase(m1,m2),mew3(m3)
解析:(1)题意要求使用m1和m2初始化数据成员mem1和mem2,同mem1的初始化一样,需要在成员初始化列表中完成mem2的初始化。
(2)sum函数的定义需要返回mem1和mem2之和。
(3)XDerived公有继承XBase类,在继承列表中使用public。
(4)在成员初始化列表中初始化基类成员时,需要调用基类的构造函数,初始化mem3时,可以直接初始化。
综合应用题
3.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示矩形的类MyRectangle;程序应当显示:
(0,2)(2,2)(2,0)(0,0)4
但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:
(1)在“//**1** ****found****”的下方是构造函数的定义,它用参数提供的左上角和右下角的坐标对up_left和down_right进行初始化。
(2)在“//**2** ****found****”的下方是成员函数getDownLeft的定义中的一条语句。函数getDownLeft返回用MyPoint对象表示的矩形的左下角。
(3)在“//**3** ****found****”的下方是成员函数area的定义,它返回矩形的面积。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。
//proj3.cpp
#include
using namespace std;
class MyPoint{//表示平面坐标系中的点的类
double x;
double y;
public:
MyPoint(double x,double y)
{this->x=x;this->y=y;)
double getX()const{return x;}
double getY()const{return y;}
void show()const{cout<<’(’<<x<<’,’
本文档预览:3600字符,共5472字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载