国家二级C++机试(操作题)模拟试卷295
基本操作题
1.请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程中包含了类Pets(“宠物”)和主函数main的定义。程序中位于每个“//ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
Name:sonny Type:dog
Name:John Type:dog
Name:Danny Type:cat
Name:John Type:dog
注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。
#include<lostream>
using namespace std;
enum Pets_type{dog,cat,bird,
fish};
class Pets{
private:
char * name;
Pets_type type;
public:
Pets(const char * name=\\
(1)this->type=type;
(2)delete[]name;
(3)strcpy(this->name,s.name);
解析:(1)主要考查考生对构造函数的掌握情况,因为形参名和类的私有成员名称都是type,为了避免混淆,所以规定类的私有成员使用this指针调用,即:this->type=type;。
(2)主要考查考生对析构函数的掌握情况,题目中要求,释放name所指向的字符串。要释放name指针用delete语句,即delete[]name;。
(3)主要考查考生对sineW函数的掌握情况,strcpy函数的形参为两个字符串,而name为指向字符串的指针,因此使用语句:strcpy(this->name,s.name);。
简单应用题
2.请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.cpp,其中有类CPolygon(“多边形”)、CRectangle(“矩形”)、CTfiange(“三角形”)的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序的正确输出结果应为:
20
10
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include<iostream>
using namespace std;
class CPolygon{
public:
//**********found**********
_______//纯虚函数area
声明
void printarea(void)
//**********found**********
{cout<<_______<<end1,}
};
class CRectangle:public CPolygon{
int width; //长方形宽
int height;//长方形高
public:
CRectangle(int W,int h):
width(w),height(h){}
int area(void){return
(width * height);}
};
class CTriangle:public CPolygon{
int length;//三角形一边长
int height;//该边上的高
public:
CTriangle(int 1,int h):
length(1),height(h){}
//**********found**********
int area(void){return(_______)/2;}
};
int main()f
CRectangle rect(4,5);
CTriangle trgl(4,5);
//**********found**********
_______*ppoly1,*ppoly2;
ppoly1=▭
ppoly2=&trg1;
ppoly1->printarea();
ppoly2->printarea();
retumR 0;
}
(1)viauM int area(void)=0;
(2)area()
(3)length * height
(4)Cpolygon
解析:(1)主要考查考生对纯虚函数的掌握,在定义纯虚函数时要看在派生类中函数的定义:int area(void)。由此可知纯虚函数应该为:viauM int area(void)=0;。
(2)主要考查考生对纯虚函数的掌握情况,由void printarea(void)可知,该函数要打印面积,因此在此要调用纯虚函数area,即cont<<area()。
(3)主要考查考生对数学公式的掌握,该函数要返回三角形面积,三角形的面积公式为长乘以该边上的高除以2,即return(length * height)/2;。
(4)主要考查考生对抽象类的掌握情况,根据程序段:
ppoly1=▭
ppoly2=&trg1;
可知指针ppoly1指向CReetangle类,而指针ppoly2指向CTfiangle类,因此在这里只能填这两种类的基类CPolygon类。
综合应用题
3.请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程prog3,其中声明了ValArray类,该类在内部维护一个动态分配的整型数组。ValArray类的复制构造函数应实现对象的深层复制。请编写ValArray类的复制构造函数。在main函数中给出了一组测试数据,此种隋况下程序的输出应该是:
ValArray v1={1,2,3,4,5}
ValArray v2={1,2,3,4,5}
要求:
补充编制的内容写在“//********333********”与“********666********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为boj文件,并且在本程序中调用。
//ValArray.h
#include<iostream>
using namespace std;
class ValArray{
int * v;
int size;
public:
ValArray(const int * P,intn):size(n)
{
v=new in
本文档预览:3600字符,共4376字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载