1、国家二级 C+机试(操作题)模拟试卷 325及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: init TestClass del TestClass 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include class TestClass *error* *error* int TestClass()cout #define M 2 #define N 4 void fun(int aMN, int*su
2、m) void main() int XMN=7, 6, 5, 2, 4, 2, 8, 3; int s; fun(x, s); cout using namespace Std; Class CBase public: CBaSe(int i)b=i; *1* protected: int b; ; class CDerive: public CBase public: *2* void display() coutdisplay(); Void main() *4* func(d1); func(d2); 国家二级 C+机试( 操作题)模拟试卷 325答案与解析 一、基本操作题 1 【正确
3、答案】 (1)添加语句: public: (2)TestClass()coutaij)k=j; 求得每一行的最小值 s+=aik; 最小值求和 *sum=s; 返回求和值 【试题解析】 (1)依次访问每一行的元素。 (2)在对每一行的访问过程中选出最小数。 (3)将选出的最小数求和。 三、综合应用题 3 【正确答案】 (1)添加语句: virtual Void display()=0; (2)添加语句: CDerive(int i): CBaSe(i) (3)添加语句: Void disPlay()cout()=0,因此第 1个标识下应添加 “virtual void display()=0;
4、 ”。 (2)类 CDerive的构造函数用来完成类成员变量的初始化,派生类没有自己的成员变量,可直接采用基类的构造函数完成初始化,因此第 2个标识下文添加“CDerive(int i): CBase(i)”。 (3)第 3个标识下是完成类 CDerivc2成员函数 diaplay()的定义和实现,根据要求的输出结果 “InCDerive2s display() b=2”可知 display()函数除输出字符串 “In CDerive2s display() ”还输出变量 b的值,故第 3个标识下应添加 “void display()cout“In CDerive2s display() “b
5、=“bendl; ”。 (4)在第 4个标识下应定义变量 d1和 d2, func()函数的参数为 CBase对象指针,因此 d1和 d2均为 CBase对象指针,最终的输出结果 b分别为 1和 2,这两个对象指针分别指向 CDerive对象和 CDerive2对象,且初始化值分别为 1和 2,故第4个标识下应添加 “CDerive*d1=new CDerive(1); CDerive2*d2=new CDerive2(2); ”,在 C+中,一个基类指针 (或引用 )可以用于指向它的派生类,而且通过这个指针 (或引用 )调用虚函数,被调用的是该指针 (或引用 )实际指向的对象类的重定义版本,即 CDerive和 CDerive2均有成员函数 display(),在屏幕上打印结果。