1、国家二级 C+机试(操作题)模拟试卷 235及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: 10 TestClass1 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include iostream class TestClass1 publiC: TestClass1() ; *error* private: virtual TestClass1() using namespace std; cout “TestClass1“
2、endl; ; ; class TestClass2: public TestClass1 public: *error* explicit TestClass2(int i) m_i=i; ; TestClass2&operator()(int i) this- m_i=i; void print() *error* cout m_i endl; private: int m_i; ; void fun(TestClass2 C1) C1 print(); int main() fun(10); return0; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cp
3、p。请完成函数 fun(int x),该函数功能是将 x的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile()将结果输出到 modi2 txt文件中。 例如: x=13, 13的二进制数字为 1101,则输出到屏幕的为 1101。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #include iostream #include fstream #include cmath using namespace std; void WriteFile(char*str) ofstream out1; out1 open(“modi2 txt“, ios
4、_base: binary|ios_base: app); for(int i=0; stri!=0; i+) out1 put(stri); out1 close(); void fun(int x) void ClearFile() ofstream out1; out1 open(“modi2 txt“); out1 close(); int main() ClearFile(); fun(13); return0; 三、综合应用题 3 用 VC6打开考生文件夹下的源程序文件 modi3 cpp,其中定义了多个类,但类不能达到输 出要求,按照定义的输出修改函数,使得输出如下: TestC
5、lass3 TestClass2 TlestClass1 其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整。 (1)类 TestClass2公共继承于 TestClass1,请在注释 *1*后添加适当的语句。 (2)print函数为虚函数,请在注释 *2*后添加适当的语句。 (3)修改语句,使得 p指定对象 obj3,请在注释 *3*后添加适当的语句。 (4)修改语句,利用 p调用 print()函数,完成输出信息,注释*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。 #include iostream using nam
6、espace std; C1ass TestClass1 public: void print() cout “TestClass1“ endl; ; *1* class TeStClass2 public: *2* void print() cout “TestClass2“ endl; ; class TestClass3: public TestClass2 public: void print() cout “TestClass3“ endl; ; int main() TestClass2 obj2; TestClass3 obj3; TestClass1*p; obj2 print
7、(); obj3 print(); *3* p=obj3; *4* p print(); return0; 国家二级 C+机试(操作题)模拟试卷 235答案与解析 一、基本操作题 1 【正确答案】 (1)删除 “private: ”语句 (2)TestClass2(int i) (3)std: cout m i std: endl; 【试题解析】 (1)第 1个标识下的 “virtual TestClass1()”语句是 TestClass1()析构函数,不是私有函数,所以 删除 “private: ”。 (2)“explicit TestClass2(int i)”构造函数语句中的 “exp
8、licit”是禁止隐式转换。程序中无法实现对类 TestClass2的直接使用,所以这里应该将其删除。即 “TestClass2(int i)”。 (3)第 3个标识下实现, fun函数中 m i的标准输出,即在屏幕上输出 lO。在程序中用到 C+标准库时,要使用 std标准命名空间进行限定。 cout为标准库函数,所以要声明 cout是在命名空间 std中定义的流对象,即 “std: cout m_istd: : endl; ”或者添加 “using namespace std; ”。 二、简单应用题 2 【正确答案】 char str32; int i; for(i=30; i =0; i
9、-)计算二进制 if(x 2)stri=1; 4余,如果余不为零字符串 str第 i位为 1 else stri=0;否则为 0 x =1; if(!x)break; str31- 0;串加尾符 cout &stri endl; WriteFile(&stri); 【试 题解析】 (1)定义存放二进制的字符串 str。 (2)然后利用 for循环对十进制数字 X进行取余运算,直到余数为 0结束。 (3)如果取余结果为 0,则二进制字符串这个字符位的。值为 0,否则为 1。 (4)最后调用 WriteFile将运算结果存入文件。 三、综合应用题 3 【正确答案】 (1)将 “class Test
10、Class2”补充完整为: class TestClass2: public TestClass1 (2)将 “voidprint()”补充完整为: virtual void print() (3)将 “p=obj3; ”修改为: p=&obj3; (4)将 “p print(); ”修改为: p- print(); 【试题解析】 (1)题目 1要求 “类 TestClass2公共继承于 TestClass1”。从已有的类产生一个新的子类,成为类的派生。声明派生类的一般形式为: class派生类名:继承方式 基类名。根据题目中的要求以及派生类的一般形式,第 1个标识下添加语句 “class T
11、estClass2: public TestClass1”。 (2)题目 2要求 “print函数为虚函数 ”。在 C+中,用 virtual声 明的函数为虚函数,因此第 2个标识下的语句修改为 “virtual voidprint()”。 (3)题目 3要求 “使得 p指定对象 obj3”。 p为指针变量, obj3为类的对象,将一个指针变量指向另一个变量,只要把被指向的变量的地址赋给指针变量即可。取对象 obj3地址的语句为 &obj3,所以这里补全 “p=&obj3; ”。 (4)题目 4要求 “利用 p调用 print()函数 ”。 C+中用 “- “运算符实现成员访问,因此调用 print()函数,应将第 4个标识下修改为 “p- print(); ”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1