国家二级C++机试(操作题)模拟试卷376
基本操作题
1.使用VC6打开考生文件夹pmjI下的工程pmjI,其中定义了一个CD类。程序中位于每个//ERROR************found**********下的语句行有错误,请加以更正,不得修改程序的其他部分。更正后程序的输出应该是:
歌唱祖国30
义勇军进行曲95
注意:只能修改每个//ERROR**********found***********下的那一行,不要改动程序中的其他内容。
#include
#include
usinq namespace std;
clasS CD
{
char name[20],
int number;
public:
void init(char*aa,int bb)
{
//ERROR*****found*****
name=aa;
number=bb;
}
char*getName(){
//ERROR*****found*****
return*name;
}
int getNumber(){return number;)
void output(){
//ERROR*****found*****
cout<<name[20] <<’’<<num—
ber<<endl;
}
};
void main()
{
CD dx,dy;
dx.init(”歌唱祖国”,30);
dy.init(”义勇军进行曲”,3*dx.getNumber()+5);
dx.output();
dy.output();
}
(1)strcpy(name,aa);
(2)return name;
(3)cout<<name<<’’<<number<<end1:
解析:程序定义CD类,它包含两个数据成员:字符数组name和整型变量number;还包含四个公有成员函数,init()函数接收两个参数,用参数对数据成员进行赋值;getName()函数返回数据成员name;getNumber()函数返回数据成员number;output()函数将数据成员name和number输出。CD类的定义体中,有三个错误:
(1)init()函数将形参aa赋给name,由于n&rne是字符数组,所以不能通过简单的赋值运算符进行赋值,应该使用strcpy()函数将形参aa指向的字符串拷贝到name中。
(2)getName()函数的返回值为char*类型,所以函数体的return语句应该返回name,而不是name指向的字符串。
(3)output()函数需要输出两个数据成员,输出字符数组时,只需要给出数组名name即可。
简单应用题
2.请使用VC6或使用【答题】菜单打开考生文件夹pmj2下的工程proj2,其中在编辑窗口内显示的主程序文件中定义有类Base和Derived,以及主函数main。程序文本中位于每行 “//****found****”下面的一行内有一处或多处下画线标记,请在每个下画线标记处填写合适的内容,并删除下画线标记。经修改后运行程序,得到的输出应为:
sum=55.
注意:只在横线处填写适当的代码,不要改动程序中的其他内容。
#include
using namespace std;
ClaSS Base
{
public:
Base(int m1,int m2){
meta1=m1;mem2=m2;
}
int SLIm(){return mem1+mem2;)
private:
int mem1,mem2;//基类的数据成员
};
//派生类Derived从基类Base公有继承
//************* found**************
claSS Derived:
{
public:
//构造函数声明
Derived(int m1,int m2,int m3);
//sum函数定义,要求返回meml、mem2和
mem3之和
//************* found**************
int sum(){return________+mere3;}
private:
int mere3; //派生类本身的数据成员
};
//构造函数的类外定义,要求由m1和m2分别初始化mem1和mem2,由m3初始化mem3
//**********found**********
_______Derived(int m1,int m2,int
m3):
//**********found*********
______,mere3(m3){)
int main(){
Base a(4,6);
Derived b(10,15,20);
int sum=a.sum()+b.sum();
cout;<<”sum=”<<sum<<endl;
return 0;
}
(1)public Base
(2)Base::sum()
(3)Derived::
(4)Base(m1,m2)
解析:(1)主要考查考生对公有继承的掌握情况,根据题目要求:派生类Derived从基类Base公有继承,因此这里使用public来公有继承。
(2)主要考查考生对成员函数的掌握情况,根据题目对sum函数的要求:sum函数定义,要求返回meml、mem2和mem3之和,因此这里直接调用基类的sum函数,再加上merrr3就满足题目要求。
(3)主要考查考生对构造函数的掌握情况,由于Derived的构造函数在类外定义,因此要加上类名和作用域符,即Derived::。
(4)主要考查考生对构造函数的掌握情况,因为Deftved是Base类的派生类,所以其构造函数要使用成员列表初始化先给Base初始化。
综合应用题
3.请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,其中该工程中包含定义了用于表示姓名的抽象类Name、表示“先名后姓”的姓名类Name1(名、姓之间用空格隔开)和表示“先姓后名”的姓名类Name2(姓、名之间用逗号隔开);程序应当显示:
John Smith
Smith,John
本文档预览:3600字符,共6337字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载