1、国家二级 C+机试(操作题)模拟试卷 422及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: TestClass1 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamh#includeasserthStruct TestClass0 *error* virtual void fun();class Test
2、Class1:publicTeStelass0 void fun() cout“TestClass1“end1; ;class TestClass2:publicTestClass0 void fun() cout“TestClass2“end1; ;void main() TestClass0* p; TestClass1 obj1; TestClass2 obj2; *error* p=* obj1; P-fun(); *error* p=*obj2; p-fun(); return;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文
3、件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(hat N4)的功能是用 4个数字,组成互不相同且无重复数字的三位数,并将满足所有条件的数字输出到屏幕,并且每输出一个三位数字就换一行。 程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是 0则也去掉。 #include void fun(int N4) int main() int N4=1,2,3,0; fun(N); return 0; (分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件
4、 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)基类 Person完成打印功能,定义其中的打印函数为虚函数,请在注释*1*后添加适当的语句。 (2)类 Man继承于 Person,在构造函数中设置性别为 1,请在注释*2*后添加适当的语句。 (3)类 Woman继承于 Person,在构造函数中设置性别为 0,请在注释*3*后添加适当的语句。 (4)实现函数 fun(),用于传递不同的类型,打印出性别,请在注释*4*后添加适当的语句。 输出的内容如下: Sex=Man Sex=Woman 注意:除在指定位置添加语句之外,请不要改动程序中的
5、其他内容。#includeiostreamhClass Personpublic: *1* void print(); int sex;class Man:public Personpublic: Man() *2* void print() cout“Manend1; ;class Woman:public Personpublic: Woman() *3* ) void print() cout“Woman“end1; ;*4* cout“Sex=“; pprint();int main() Man m; fun(m); Woman n; fun(n); return 0;(分数:2.00
6、)_国家二级 C+机试(操作题)模拟试卷 422答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: TestClass1 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamh#includeasserthStruct TestClass0 *error* virtual void fun();class Tes
7、tClass1:publicTeStelass0 void fun() cout“TestClass1“end1; ;class TestClass2:publicTestClass0 void fun() cout“TestClass2“end1; ;void main() TestClass0* p; TestClass1 obj1; TestClass2 obj2; *error* p=* obj1; P-fun(); *error* p=*obj2; p-fun(); return;(分数:2.00)_正确答案:(正确答案:(1)virtual void fun()=0; (2)p=&
8、obj1; (3)p=&obj2;)解析:解析:(1)如果在基类中并不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数 fun()应该是纯虚函数,也就是声明虚函数的时候初始化为 0的函数。即第 1个标识下的“virtual void fun()=0;”。 (2)第 2个标识下的 p为指针变量,将对象 0bj1赋值给 p,实际上是 p指向对象 obj1的地址,所以“p=*obj1;”修改为“p=&obj1;”。 (3)第 3个标识下的“p=*obj2;”语句同(2),修改为“p=&obj2;”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下
9、的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(hat N4)的功能是用 4个数字,组成互不相同且无重复数字的三位数,并将满足所有条件的数字输出到屏幕,并且每输出一个三位数字就换一行。 程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是 0则也去掉。 #include void fun(int N4) int main() int N4=1,2,3,0; fun(N); return 0; (分数:2.00)_正确答案:(正确答案:int i,j,k; for(i=0;i4;i+) 百位
10、循环 for(j=0;j4;j+) 十位循环 for(k=0;k4;k+) 个位循环 if(i!=j&j!=k&k!=i&Ni!=0) 当三位数不同,并且百位不为 0 coutNiNjNk end1; 输出这三位数组成的数字 )解析:解析:(1)利用三层循环,对要三位数字是否相同进行判断。 (2)如果三位数不同,并且百位不为0。那么依次输出这三位数,即为三位数组成的数字。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)基类 Person完成打印功能,定
11、义其中的打印函数为虚函数,请在注释*1*后添加适当的语句。 (2)类 Man继承于 Person,在构造函数中设置性别为 1,请在注释*2*后添加适当的语句。 (3)类 Woman继承于 Person,在构造函数中设置性别为 0,请在注释*3*后添加适当的语句。 (4)实现函数 fun(),用于传递不同的类型,打印出性别,请在注释*4*后添加适当的语句。 输出的内容如下: Sex=Man Sex=Woman 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamhClass Personpublic: *1* void print(); int sex;c
12、lass Man:public Personpublic: Man() *2* void print() cout“Manend1; ;class Woman:public Personpublic: Woman() *3* ) void print() cout“Woman“end1; ;*4* cout“Sex=“; pprint();int main() Man m; fun(m); Woman n; fun(n); return 0;(分数:2.00)_正确答案:(正确答案:(1)将“void print();”补充完整为: virtual void print(); (2)添加语句:
13、sex=1; (3)添加语句:sex=0; (4)添加语句:void fun(Person&p)解析:解析:(1)题目 1要求“基类 Person完成打印功能,定义其中的打印函数为虚函数”。虚函数是函数的一种,定义虚函数,在函数名前声明 virtual就可以了,所以第 1个标识下的“void print();”语句修改为“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(),用于传递不同的类型,打印出性别”。根据“pprint();”语句知道,fun()函数的形参为指针p,由于它调用了基类 Person中的成员函数 print(),所以 p的基类为 Person,即添加函数 fun()的定义为“void fun(Person&p)”。