1、国家二级 C+机试(操作题)模拟试卷 234及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为:从键盘输入一个字符串,并将结果保存到文件 modi1 txt中。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include iostream #include fstream *error* using std; void WriteFile(char*s) ofstream out1; *error* out1 open(“m
2、odi1 txt“, binary|app), for(inti=0; si!=0; i+) *error* out1 puts(si); out1 close(); void ClearFile() ofstream out1; out1 open(“modi1 txt“); out1 close(); int main() char s1024; ClearFile(); cout “please input a string: “ endl; cin getline(s, 1024); WriteFile(s); return0; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序
3、文件 modi2 cpp。请完成函数 fun(int x),该函数功能是判定 X的所有的约数,并且在函数中调用写函数 WriteFile0将结果输出到 modi2 txt文件中。 例 如: x=10的约数为 1, 2, 5, 10。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #include iostream #include fStream #include cmath using namespace std; void WriteFile(int c) ofStream out1; out1 open(“modi2 txt“, ios_base: binar
4、y|ios_base: app); out1 C ; out1 close(); void fun(int x) void ClearFile() ofStream out1; out1 open(“modi2 txt“); out1 close(); int main() ClearFile(); fun(10); return0; 三、综合应用题 3 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp,其中定义了用于表示坐标的类 TestClass1,但类 TestClass1的定义并不完整,按要求完成下列操作,将类的定义补充完整。 (1)声明 TestClass2类为 Test
5、Class1类的友元类,请在注释 *1*后添加适当的语句。 (2)完成类的构造函数,分别对成员变量赋值,请在注释 *2*后添加适当的语句。 (3)完成类的构造函数,分别对成员变量赋值,请在注释 *3*后添加适当的语句。 (4)完成计算平面上两点之间的距离函数 Distance,计算的方法如下: X坐标之差的平方与 Y坐标之差的平方之和的开方。请在注释 *4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。 #include iostream #include cmath using namespace std; C1ass TestClass
6、1 *1* publiC: *2* X=a; Y=b: *3* X=a; Y=0j void print() cout “x=“ X endl; cout “y=“ Y endl; private: float X, Y; ; class TestClass2 public: float DiStance(TeStClass1&p, TestClass1& q); ; float TestClass2: DiStance (TestClass1& p, TestClass1& q) float result; *4* cout result endl; return result; int m
7、ain() TestClass1 p(10, 10), q(20); TestClass2d; d Distance(p, q); return0; 国家二级 C+机试(操作题)模拟试卷 234答案与解析 一、基本操作题 1 【正确答案】 (1)using =namespace std; (2)out open(“modi1 txt“, ios: binary|ios: app); (3)out1 put(si); 【试题解析】 (1)第 1个标识下的 “using std; ”是在程序中引入标准命 名空间std,对于 C+中引入标准命名空间的格式,缺少 namespace,所以第 1个标识下
8、的语句修改为 “using namespace std; ”。 (2)第 2个标识下,调用成员函数 open中,输入输出方式是在 ios类中定义的,所以 “out1 open(“modi1 txt“, binarylapp); ”语句缺少类 ios,即第 2个标识下的语句修改为 “out1 open(“modi1 txt“, ios: binaryios: app); ”。 (3)第 3个标识应该用流成员函数 put输出字符,所以第 3个标识下的语 句修改为“out1 put(si); ”。 二、简单应用题 2 【正确答案】 for(int i=1; 1 =x; 1+) if(x i=0)如果
9、 x被 i整除,那么 i为 x的约数 WriteFile(i);将约数 i存入文件 【试题解析】 (1)由 1到 x,循环判断其中是否有 X的约数。 (2)如果 X被 i整除,那么 i为 x的约数。 (3)最后调用 WriteFile函数,将约数 i存入文件。 三、综合应用题 3 【正确答案】 (1)添加语句: friend class TestClass2; (2)添加语句: TestClass1(float a, float b) (3)添加语句: TestClass1(float a) (4)添加语句: result=sqrt(p X-q X)*(p X-q X)+(p Y-q Y)(p
10、 Y-q Y); 【试题解析】 (1)题目 1要求 “声明 TestClass2类为 TeStClass1类的友元类 ”。C+中声明友元类的一般形式为 friend类名:,所以这里补全 “friend class TestClass2; ”。 (2)题目 2要求 “完成类的构造函 数,分别对成员变量赋值 ”。程序中 TestClass1类的构造函数缺少定义,构造函数首部的一般格式为:构造函数名 (类型 1形参 1,类型 2形参 2, ) ,所以在第 2个标识下补全 “TestClass1(float a, float b)”。 (3)题目 3要求 “完成类的构造函数,分别对成员变量赋值 ”。同理,第三个标识下补全 “TestClass1(float a)”。 (4)题目 4要求 “完成计算平面上两点之间的距离函数 Distance”。题目中已经给出了计算方法, X坐标之差的平方与 Y坐标之差的平方之和的开方。利用 C+中 的开方函数 sqrt补全函数中的两点之间的距离。即 “result=sqrt(p X-q X)*(p X-q X)+(p Y-q Y)*(p Y-q Y); ”。