1、国家二级 C+机试(操作题)模拟试卷 474及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,此工程包含一个源程序文件 proj1 cpp。其中位于每个注释 “ ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: You are right 注意:只修改注释 “ ERROR *found*”的下一行语句,不要改动程序中的其他内容。 proj1 cpp #include using namespace std; class MyClass public: MyClass(int x): numb
2、er(x) ERROR *found* MyClass(int x) ERROR *found* void Judge(MyClass&obj); private: int number; ; void Judge(MyClass&obj) if(obj number=10) cout using namespace std; class CPolygon public: *found* _纯虚函数 area声明 void printarea(void) *found* coutprintarea(); ppoly2-printarea(); return 0; 三、综合应用题 3 请使用 V
3、C6或使用【答题】菜单打开考生文件夹 prog3下的工程 prog3,其中包含了类 Polynomial(“多项式 ”)的定义。 形如 5x4+3 4x2一 7x+2的代数式称为多项式,其中的 5为 4次项系数, 3 4为 2次项系数,一 7为 1次项系数, 2为 0次项(常数项 )系数。此例缺 3次项,意味着 3次项系数为 0,即省略了 0x3。在Polynomial中,多项式的各个系数存储在一个名为 coef的数组中。例如,对于上面的多项式,保存在 coef0、 coef1coef4 中的系数依次为: 2 0、一 7 0、3 4、 0 0 5 0,也即对于 i次项,其系数就保存在 coef
4、i中。成员函数getValue计算多项式的值,多项式中 x的值是由参数指定的。 请 补充完成文件Polynomial cpp中成员函数 getValue的定义。此程序的正确输出结果应为: Value of p1 when x=2 0: 59 8 Value of p2 when x=3 0: 226 8 注意:只在函数getValue的 “ 23332”和 “ r 26662”之间填入若干语句,不要改动程序中的其他内容。 Polynomiac h #include using namespace std; class Polynomial “多项式 ”类 public: Polynomial(
5、double coef, int num): coef(new doublenum), num of terms(num) for(int i=0; icoefi=coef i; Polynomial()delete coef; 返回指定次数项的系数 double getCoefficient (int power)constreturn coefpower; 返回在 x等于指定值时多项式的值 double getValue(double x)const; private: 系数数组, coef0为 0次项 (常数项 )系数, coef1为 1次项系数, coef2为 2次项 (平方项 )系数
6、,余类推。 Double*coef; int num_of_terms; ; void writeToFile(const char*path); Polymomial cpp #include“Polynomial h“double Polynomial: getValue(double x)const 多项式的值 value为各次项的累加和 double value=coef0; *333* *666* return value; main cpp #include“Polynomial h“ int main() double p1=5 0, 3 4, -4 0, 8 0,p2=0 0,
7、 -5 4, 0 0, 3 0, 2 0); Polynomial polyl(p1, sizeof(p1)sizeof(double), poly2(p2, sizeof(p2) sizeof(double); cout 国家二级 C+机试(操作题)模拟试卷 474答案与解析 一、基本操作题 1 【正确答案】 (1) MyClass() (2)friend void Judge(MyClass&obj); (3)MyClass object(10); 【试题解析】 (1)主要考查考生对析构函数的掌握,析构函数是没有形参的,因此把形参去掉即可,因为该类没有动态分配空间,所以不需要使用 dele
8、te语句释放空间。 (2)主要考查考生对友元函数的掌握,在函数定义中有语句 void Judge(MyClass&obj),在 main函数中有语句 Judge(object);,即 Judge函数是可以被类外函数调用的,并且定义时没有加上类名和作用域,因此可以知道 Judge函数是友元函数,需要在类型前加上 friend。 (3)主要考查考生对构造函数调用 的掌握,题目要求输出结果为: You are fight,在 Judge函数体内有语句: if(obj number=10) cout0) 当 j大于零时,做相乘操作,即完成该项的乘方动作 x_value*=x; j-; value+=coefi*x value; 把 i项的乘方结果乘以该项系数后加进 value中 【试题解析】 题目要求成员函数 getValue计算多项式的值,多项式中 x的值由参数指定,多项式的值 value为各次项的累加和。由类的定义可知数组 coef中存储的是各次项的系数,这里使用 for循环来完成题目要求 ,当次项为 0时,value=coef0。当次项为 1时, value=coef1*x+coef0。依次类推直到 X的最高次数。