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