好文档 - 专业文书写作范文服务资料分享网站

二级C++上机题库含答案 

天下 分享 时间: 加入收藏 我要投稿 点赞

voidmain() { D3d;

/**********found**********/ d.f(); } 【参考答案】

(1)将class D2:public Base 改为:class D2:virtual public Base (2)将class D3::public D1,public D2 改为:class D3:public D1,public D2 (3)将d.f();改为:d.Base::f(); 【试题解析】

(1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一;

(2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表;

(3)主要考查对虚基类函数调用过程的理解,只有使用\限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。 二、简单应用题

请编写一个函数inlinelongsum(intn),用递归函数完成运算:sum(n)=1*1+2*2+???+n*n,递归表达式为sum(n)=sum(n-1)+n2。

注意:部分源程序已存在文件kt10_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。 文件kt10_2.cpp的内容如下: #include inlinelongsum(intn) { } voidmain() { intn;

cout<<\输入n:\ cin>>n;

cout<<\结果为:\ 【参考答案】 inline long sum(int n) { if(n==1) return 1; else

return n*n+sum(n-1); } 【试题解析】

本题考查对递归函数掌握的熟练程度。递归的终止条件为n=1

时,值为1。 三、综合应用题

使用VC6打开考生文件夹下的工程kt10_3,此工程包含一个源程序文件kt10_3.cpp,其中定义了用于表示雇员信息的CEmployee类与表示公司信息的Company类,但这两个类的定义并不完整。请按要求完成下列操作。

(1)定义Cemployee类的私有数据成员name(大小为50的字符数组)和pay(double型数据),分别用于记录雇员姓名和月薪。请在注释“//**1**”之后添加适当的语句。

(2)完成Company类默认构造函数的定义,该构造函数将n值赋值给私有成员num,并完成指针emp所指的n个Cemployee对象空间的申请,请在注释“//**2**”之后添加适当的语句。

3

Company

voidCompany::add(intcode,charname[50],doublepay)的定义,该函数将某一雇员的编号code、姓名name及月薪pay输入到公司信息中。请在注释“//**3**”之后添加适当的语句。

(4)完成Company类成员函数voidCompany::print()的定义,使其以\的格式输出公司内所有员工的月薪信息。请在注释“//**4**”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序清单如下:

#include #include classCEmployee { public:

voidputname(charn[50]){strcpy(name,n);} voidgetname(charn[50]){strcpy(n,name);} voidputpay(doubled){pay=d;} doublegetpay(){returnpay;} private: //**1** }; classCompany { private:

CEmployee*emp; intnum; public: Company(intn);

voidadd(intcode,charname[50],doublepay); voidprint(); };

Company::Company(intn) { //**2** }

voidCompany::add(intcode,charname[50],doublepay) { //**3** }

voidCompany::print() { //**4**

for(inti=0;igetname(c); money=(emp+i)->getpay(); cout<

emp=new CEmployee[num]; (3)(emp+code)->putname(name); (emp+code)->putpay(pay); (4)char c[50]; double money; 【试题解析】

二级C++上机题库含答案 

voidmain(){D3d;/**********found**********/d.f();}【参考答案】(1)将classD2:publicBase改为:classD2:virtualpublicBase(2)将classD3::publicD1,publicD2
推荐度:
点击下载文档文档为doc格式
2zcng7ekql6c4rp7porv
领取福利

微信扫码领取福利

微信扫码分享