- 37.00 KB
- 2022-03-29 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
2012年计算机二级C++第五套上机模拟试题及答案解析一、改错题 使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为: classBase classD1 classD2 classD3 finBase 源程序文件kt10_1.cpp清单如下: #include classBase {public: Base(){cout<<"classBase"< voidf(){cout<<"finBase"< classD1:virtualpublicBase {public: D1(){cout<<"classD1"< voidf(){cout<<"finD1"< /**********found**********/ classD2:publicBase {public:n D2(){cout<<"classD2"< /**********found**********/ classD3::publicD1,publicD2 {public: D3(){cout<<"classD3"< voidmain() {D3d; /**********found**********/ d.f();} 【参考答案】 (1)将classD2:publicBase 改为:classD2:virtualpublicBase (2)将classD3::publicD1,publicD2 改为:classD3:publicD1,publicD2 (3)将d.f();改为:d.Base::f(); 【试题解析】 (1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一; (2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表; (3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。n二、简单应用题 请编写一个函数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<<"结果为:"<getname(c); money=(emp+i)->getpay(); cout< {Companycom(2);n com.add(0,"Jack",200); com.add(1,"Lee",300); com.print();} 【参考答案】 (1)charname[50]; doublepay; (2)num=n; emp=newCEmployee[num]; (3)(emp+code)->putname(name); (emp+code)->putpay(pay); (4)charc[50]; doublemoney; 【试题解析】 本题考查类成员的定义、类成员函数的定义与调用、对象数组的使用。注意指针和动态申请空间new的使用方法。使用指针调用成员应该用"->"符号,new的返回值是指针类型的。