1、国家二级 C+机试(操作题)模拟试卷 423及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为: TestClass2 TestClass3 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamClass TestClass1public: virtual void fun()=0;class TestClass2:public Tes
2、tClass1 *error* int fun() using namespace std; cout“TestClass2“end1; ; class TestClass3:public TestClass1 *error* void fun() *error* cout“TestClass3“end1; ; void main() TestClass1* p; TestClass2 obj1; TestClass3 obj2; p=&obj1; p-fun(); obj2fun(); return;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件
3、夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序,使函数 fun()实现以下功能:找出一个整数,它加上 100后是一个完全平方数,再加上 268又是一个完全平方数,请问该数是多少? 程序分析:在 10万以内判断,先将该数加上 100后再开方,再将该数加上268后开方,如果开方后的结果满足条件,即是结果。 #include #include void fun() int main() fun(); return 0; (分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按
4、要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义纯虚类 TestClass0,包含纯虚函数 fun(),请在注释*1*后添加适当的语句。 (2)完成类 TestClass1,以公有继承 TestClass0,请在注释*2*后添加适当的语句。 (3)定义 TestClass0对象指针 p,请在注释*3*后添加适当的语句。 (4)把 TestClass1的对象 obj的指针赋给 TestClass0指针P,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass TestClass
5、0public: *1*;*2*class TestClass1public: void fun() cout“fun“end1; ;int main() TestClass1 obj; *3*4* p-fun()j return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 423答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为: TestClass2 TestClass3 注意:不要改动 main
6、函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamClass TestClass1public: virtual void fun()=0;class TestClass2:public TestClass1 *error* int fun() using namespace std; cout“TestClass2“end1; ; class TestClass3:public TestClass1 *error* void fun() *error* cout“TestClass3“end1; ; void main() Test
7、Class1* p; TestClass2 obj1; TestClass3 obj2; p=&obj1; p-fun(); obj2fun(); return;(分数:2.00)_正确答案:(正确答案:(1)void fun() (2)添加语句:public: (3)std:cout“TestClass3 “解析:解析:(1)fun()函数是没有返回值的,而第 1个标识下的“int fun()”语句中定义的 funO函数是有 int型返回值的,所以将其修改为“void fun()”。 (2)第 2个标识下的 fun()函数,没有被定义为public型,所以外部其他成员无法访问,只能是类本身访
8、问,所以添加“public:”。 (3)在程序中用到 C+标准库时,要使用 std标准命名空间进行限定。第三个标识下 cout为标准库函数,所以要声明cout是在命名空间 std中定义的流对象,即为“std:cout”TestClass3”二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序,使函数 fun()实现以下功能:找出一个整数,它加上 100后是一个完全平方数,再加上 268又是一个完全平方数,请问该数是多少? 程序分析:在 10万以内判断,先将该数加上 100后再开方,再将该数加上268
9、后开方,如果开方后的结果满足条件,即是结果。 #include #include void fun() int main() fun(); return 0; (分数:2.00)_正确答案:(正确答案:long int i,x,y,z; for(i=i;i100000;i+) x=aqrt(i+100); x为加上 100后开方后的结果 y=aqrt(i+268); y 为再加上 268后开方的结果 if(x*x=i+100&y*y=i+268) 如果一个数的平方根的平方等于该数, 说明此数是完全平方数 coutiend1; )解析:解析:(1)利用循环找到满足条件的整数。 (2)首先计算 x
10、加上 100和 y加上 268的开方。 (3)一个数的平方根的平方等于该数,说明此数是完全平方数。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义纯虚类 TestClass0,包含纯虚函数 fun(),请在注释*1*后添加适当的语句。 (2)完成类 TestClass1,以公有继承 TestClass0,请在注释*2*后添加适当的语句。 (3)定义 TestClass0对象指针 p,请在注释*3*后添加适当的语句。 (4)把 TestClass1的
11、对象 obj的指针赋给 TestClass0指针P,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass TestClass0public: *1*;*2*class TestClass1public: void fun() cout“fun“end1; ;int main() TestClass1 obj; *3*4* p-fun()j return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:virtual void fun()=0; (2)将“class TestC
12、lass1”补充完整为:class TestClass1:public TestClass0 (3)添加语句:TestClass0* p; (4)添加语句:p=&obj;)解析:解析:(1)题目 1要求“定义纯虚类 TestClass0”。在 C+中,虚函数在基类用 virtual声明类为虚类。纯虚类是在声明虚类时被“初始化”为 0的函数。所以第 1个标识下应添加“virtual voidfun0=0;”。 (2)题目 2要求“完成类 TestClass1,以公有继承 TestClass0”。公有继承是在定义一个派生类时将基类的继承方式指定为 public的,称为公用继承。所以这里补全“class TestClass1:public TestClass0”。 (3)题目 3要求“定义 TestClass0对象指 p”。定义类的对象指针变量,一般的格式为:类名指针变量,所以这里添加“TestClass0*p;”。 (4)题目 4要求“把TestClass1的对象 obj的指针赋给 TestClass0指针 p”。将指针指向的对象赋值给另一个指针,其实是将其地址指向另一个指针的地址,所以使用取地址运算符“&”,即在第四个符号下添加语句“p=&obj;”。