1、国家二级( C+)机试模拟试卷 59及答案与解析 一、程序改错题( 30分) 0 使用 VC6打开考生文件夹下的工程 RevProj14。此工程包含一个源程序文件RevMain14.cpp,但该程序中类的定义有错误。请改正程序中的错误,使它能得到正确结果。 注意,不要改动 main函数,不得删行或增行,也不得更改程序的结构。 源程序文件 RevMain14.cpp中的程序清单如下: /RevMain14.cpp #include iostream #include math using namespace std; class Point private: double x; double y
2、; public: Point() void Point(double x1,double y1) x=x1; y=y1; void setvalue(double x,double y) x=x; y=y; double getx () return x; double gety() return y; void print() cout “x=“ x “,y= “ y end1; Point() ; class Line private: Point p1; Point p2; double width; public: Line(double x1,double y1,double x2
3、,double y2,double d) :p1(x1,y1),p2(x2,y2) width=d; Line() void displength() double 1; 1=sqrt(p1.getx)-p2.getx()*(p1.getx()-p2-getx()+ (p1.gety()-p2.gety()*(p1.gety()-p2.gety(); cout “the length of Line is “ 1 end1; ; int main() Line *p1; Line 1(5,15,25,35,0.5); p1= p1- displength(); return 0; 二、简单应用
4、题( 40分) 0 请编写一个函数 int fun(int n),其中 n为自然数。函数 fun()的功能是求出自然数n(包括 n)以内所有素数的和,并返回其值。 注意;部分源程序已存在文件 PROC11.cpp中。 请 勿修改主函数和其他函数中的任何内容,仅在函数 fun()的花括号中填写若干语句。 文件 PROC11.cpp的内容如下: /PROC11.cpp #include iostream using namespace std; int fun(int n); int main() int number; cout “Enter the number which you want
5、to caculate: n“; cin number; cout “The result is:“ fun(number) end1; return 0; int fun(int n) /* * * * * * * * * 三、综合应用题( 30分) 1 使用 VC6打开考生文件夹下的工程 test25_3,此工程包含一个源程序文件test25_3.cpp,其中定义了用于表示堆的类 Set,但它的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成成员函数 int IsMemberOf(int n)的定义,该函数检查参数 n是否在类的数据成员数组 elems中,如果在返回 1,反
6、之返回 0。请在注释 “/*1*”之后添加适当的语句。 (2)完成成员函数 int Add(int n)的定义,如果参数 n包含在类的数据成员数组elems中则返回 1如果数组超界则返回 0,如果都不是,则将参数 n插入到 elems中 ,下标大小为类的数据成员 PC,之后 PC自加一。请在注释 “/*2*”之后添加适当的语句。 (3)完成拷贝初始化构造函数 Set(Set Set(Set void Empty() PC=O; int IsEmpty() return PC=O; int IsMemberOf(int n); int Add(int n); void Print(); priv
7、ate: int elems100; int PC; ; int Set:IsMemberOf(int n) /*1* if(elemsi=n) return 1; return O; int Set:Add(int n) /*2* return 1; else if(PC =100) return O; else elemsPC+=n; return 1; Set:Set(Set i PC; i+) elemsi=s.elemsi; void Set:Print() cout “; for(int i=O; i PC-1; i+) cout elemsi “,“; if(PC O) cout
8、 elemsPC-1; cout “ endl; void main() Set A; cout A.IsEmpty() endl; A.Print(); Set B; for(int i=l; i =8; i+) B.Add(i); B.Print(); 国家二级( C+)机试模拟试卷 59答案与解析 一、程序改错题( 30分) 二、简单应用题( 40分) 三、综合应用题( 30分) 1 【正确答案】 (1) for(int i=O; i PC; i+) (2) if(IsMemberOf(n) (3) PC=s.PC; 【试题解析】 本题主要考查考生对于类的成员函数的定义和拷贝初始化函数的理解。