1、二级 C+机试-141 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,该程序运行有问题,请改正 main 函数中的错误,使程序的输出结果为number=1number=10number=100注意:不要改动 main 函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:#includeiostream.hclass TCpublic:TC(int i)number=i;void SetNumber(int m)number=m;int Get
2、Number()constreturn number;void Print()constcout“number=“numberend1;private:int number;void main()/*error*TC obj1;obj1.Print();TC obj2(3);/*error*obj1.number=10;/*error*TC.SetNumber(100);obj1.Print();obj2.Print();(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp
3、。完成 fun 函数,其功能是求出 M 行 N 列二维数组每行元素中的最小值,并计算它们的和,并通过形参传回主函数并输出。注意:不能修改程序的其他部分,只能修改 fun 函数。试题程序:#includeiostream.h#define M 2#define N 4void fun(int aMN,int *sum)void main()int xMN=7,6,5,2,4,2,8,3;int s;fun(x,s);coutsend1;return;(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 3.cpp。其中定义的类不完
4、整,按要求完成下列操作,将类的定义补充完整。(1)完成类 TC1 的成员函数 seta 的定义,定义 seta 对象,x 为 int 类型,请在注释 1 后添加适当的语句。(2)完成类 TC3 多继承类 TC1 和 TC2 的定义,请在注释 2 后添加适当的语句。(3)定义类 TC3 中的私有成员 c 为 int 型,请在注释 3 后添加适当的语句。(4)完成 setc 中对基类的变量 a 的赋值,请在注释 4 后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeiostream.hclass TC1int a;public:/
5、*1*return a=x;void showa()coutaend1;class TC2int b;public:void setb(int x)b=x;void showb()coutbend1;/*2*prlvate:/*3*public:void setc(int x,int y,int z)c=z;/*4*seth(y);void showc()coutcend1;void main()TC3 c;c.seta(5);c.showa();c.setc(5,7,4);c.showe();(分数:30.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_二级 C+机试-141
6、答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,该程序运行有问题,请改正 main 函数中的错误,使程序的输出结果为number=1number=10number=100注意:不要改动 main 函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:#includeiostream.hclass TCpublic:TC(int i)number=i;void SetNumber(int m)number=m;int GetNumber()const
7、return number;void Print()constcout“number=“numberend1;private:int number;void main()/*error*TC obj1;obj1.Print();TC obj2(3);/*error*obj1.number=10;/*error*TC.SetNumber(100);obj1.Print();obj2.Print();(分数:30.00)填空项 1:_ (正确答案:应改为“TC obj1(1);”。)解析:填空项 1:_ (正确答案:应改为“obj1.SetNumber(10);”。)解析:填空项 1:_ (正确答
8、案:应改为“obj2.SetNumber(100);”。)解析:解析 本题第 1 处的“TC obj1;”语句是声明 TC 类的对象 obj1,根据 TC 类构造函数的定义TC(int i),存在整型参数,并且题目要求第一个输出结果为 1,所以补全参数 1,即第 1 处的“TC obj1(1);”。第 2 处的“obj1.number=10;”应该是调用成员函数 SetNumber 赋值。在 C+中成员函数的使用形式应该是:对象名.成员函数,所以修改为“obj1.SetNumber(10);”。类是对象的抽象,而对象是类的具体实例。第 3 处“TC.SetNumber(100);”语句中的 T
9、C 为类,并不是对象,这里应该使用定义的对象,即 obj2,所以将语句修改为“obj2.SetNumber(100);”。二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。完成 fun 函数,其功能是求出 M 行 N 列二维数组每行元素中的最小值,并计算它们的和,并通过形参传回主函数并输出。注意:不能修改程序的其他部分,只能修改 fun 函数。试题程序:#includeiostream.h#define M 2#define N 4void fun(int aMN,int *sum)void main()int xMN=7,6,5
10、,2,4,2,8,3;int s;fun(x,s);coutsend1;return;(分数:40.00)_正确答案:(int i,i,k,s=0;for(i=0;iM;i+)/外循环k=0;for(j=1;jN;j+)if(a1kaij)k=j; /求得每一行的最小值s+=aik; /最小值求和*sum=s; /返回求和值)解析:解析 本题依次访问每一行的元素。在对每一行的访问过程中选出最小数。将选出的最小数求和。三、3综合应用题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。(1)完成
11、类 TC1 的成员函数 seta 的定义,定义 seta 对象,x 为 int 类型,请在注释 1 后添加适当的语句。(2)完成类 TC3 多继承类 TC1 和 TC2 的定义,请在注释 2 后添加适当的语句。(3)定义类 TC3 中的私有成员 c 为 int 型,请在注释 3 后添加适当的语句。(4)完成 setc 中对基类的变量 a 的赋值,请在注释 4 后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeiostream.hclass TC1int a;public:/*1*return a=x;void showa()c
12、outaend1;class TC2int b;public:void setb(int x)b=x;void showb()coutbend1;/*2*prlvate:/*3*public:void setc(int x,int y,int z)c=z;/*4*seth(y);void showc()coutcend1;void main()TC3 c;c.seta(5);c.showa();c.setc(5,7,4);c.showe();(分数:30.00)填空项 1:_ (正确答案:应添加“int seta(int x)”。)解析:填空项 1:_ (正确答案:应添加“class TC3:
13、public TC1,private TC2”。)解析:填空项 1:_ (正确答案:应添加“int c;”。)解析:填空项 1:_ (正确答案:应添加“seta(x);”。)解析:解析 本题第 1 处要求“完成类 TCl 的成员函数 seta 定义,定义 seta 对象 X 为 int 类型”。类的成员函数是函数的一种,它与一般函数的区别是,它是一个类的成员,出现在类体中。所以类 TC1 中的成员函数,就是在 TC1 中定义题目中要求的参数为 int x 的 seta 函数,即“int seta(int x)”。第 2 处要求“完成类 TC1(公有)和类 TC2(私有)派生类 TC3 的定义”。从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为“class 派生类名:继承方式基类名”。根据声明派生类的一般形式,这里补全“class TC3:public TC1,private TC2”。第 3 处要求“定义类 TC3 中的私有成员 c 为 int”。在类 TC3 ee 的 private 数据成员区域,定义 int c,即在第 3 处补全“int c;”。第 4 处要求“完成setc 中对基类的变量 a 的赋值”。基类为 TC1,setc 对于该类 a 的赋值,是 int seta(int x)函数的赋值,即“seta(x);”