1、国家二级 C+机试(操作题)模拟试卷 422及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: TestClass1 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include #include Struct TestClass0 *error* virtual void fun(); ; class TestClass1: public TeStelass0 void fun() cou
2、tfun(); *error* p=*obj2; p-fun(); return; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(hat N4)的功能是用 4个数字,组成互不相同且无重复数字的三位数,并将满足所有条件的数字输出到屏幕,并且每输出一个三位数字就换一行。 程序分析:可填在百位、十位、个位的数字都是 1、 2、 3、 0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是 0则也去掉。 #include void fun(int N4) int main() int N4=1, 2,
3、 3, 0; fun(N); return 0; 三、综合应用题 3 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)基类 Person完成打印功能,定义其中的打印函数为虚函数,请在注释*1*后添加适当的语句。 (2)类 Man继承于 Person,在构造函数中设置性别为 1,请在注释*2*后添加适当的语句。 (3)类 Woman继承于 Person,在构造函数 中设置性别为 0,请在注释*3*后添加适当的语句。 (4)实现函数 fun(),用于传递不同的类型,打印出性别,请在注释*4*后添加适当
4、的语句。 输出的内容如下: Sex=Man Sex=Woman 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include Class Person public: *1* void print(); int sex; ; class Man: public Person public: Man() *2* void print() cout“Manend1; ; ; class Woman: public Person public: Woman() *3* ) void print() cout“Woman“end1; ; ; *4* cout“Sex=“; p pri
5、nt(); int main() Man m; fun(m); Woman n; fun(n); return 0; 国家二级 C+机试(操作题)模拟试卷 422答案与解析 一、基本操作题 1 【正确答案】 (1)virtual void fun()=0; (2)p=&obj1; (3)p=&obj2; 【试题解析】 (1)如果在基类中并不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数 fun()应该是纯虚函数,也就是声明虚函数的时候初始化为 0的函数。即第 1个标识下的 “virtual void fun()=0; ”。 (2)第 2个标识下的 p为指针变量,将对
6、象 0bj1赋值给 p,实际上是 p指向对象obj1的地址,所以 “p=*obj1; ”修改为 “p=&obj1; ”。 (3)第 3个标识下的 “p=*obj2; ”语句同 (2),修改为 “p=&obj2; ”。 二、简单应用题 2 【正确答案】 int i, j, k; for(i=0; i4; i+) 百位循环 for(j=0; j4; j+) 十位循环 for(k=0; k4; k+) 个位循环 if(i! =j&j! =k&k! =i&Ni! =0) 当三位数不同,并且百位不为 0 coutNiNjNk end1; 输出这三位数组成的数字 【试题解析】 (1)利用三层循环 ,对要三
7、位数字是否相同进行判断。 (2)如果三位数不同,并且百位不为 0。那么依次输出这三位数,即为三位数组成的数字。 三、综合应用题 3 【正确答案】 (1)将 “void print(); ”补充完整为: virtual void print(); (2)添加语句: sex=1; (3)添加语句: sex=0; (4)添加语句: void fun(Person&p) 【试题解析】 (1)题目 1要求 “基类 Person完成打印功能,定义其中的打印函数为虚函数 ”。虚函数是函数的一种,定义虚函数,在函数 名前声明 virtual就可以了,所以第 1个标识下的 “void print(); ”语句修
8、改为 “virtual void print(); ”。 (2)题目 2要求 “类 Man继承于 Person,在构造函数中设置性别为 1”。基类 Person中变量 sex是用来存放性别的, Man继承 Person,所以 Man中性别的变量可以使用基类中的 sex变量,设置性别为 1,即 “sex=1; ”。 (3)题目 3要求 “类 Woman继承于 Person,在构造函数中设置性别为 0”。同 (2),在第三个标识下添加 “sex=0; ”。 (4)题 目 4要求 “实现函数 fun(),用于传递不同的类型,打印出性别 ”。根据“p print(); ”语句知道, fun()函数的形参为指针 p,由于它调用了基类 Person中的成员函数 print(),所以 p的基类为 Person,即添加函数 fun()的定义为 “void fun(Person&p)”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1