1、国家二级 C+机试(操作题)模拟试卷 37及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi cpp,该程序运行时有错误,请改正错误,使得程序正常运行,并且要求最后一个 catch()必须抛出执行的任何异常。 程序通过抛出异常输出: error ERROR 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 1 #include 2 int main() 3 4 try 5 f 6 throw(“error“); 7 8 *error* 9 catch(char S) 10 11 cout 2 #inclu
2、de 3 int factorial(int n) 4 5 6 7 void main() 8 9 cout 2 #include 3 USing namespace std; 4 class TestClassl 5 6 *1* 7 8 public: 9 *2* 10 11 12 X=a; 13 Y=b; 14 15 *3* 16 17 18 X=a; 19 Y=0; 20 21 void print() 22 23 cout1时,此时递归函数调用自己,即 factorial(n)=n*factorial(n 1),此时的函数的返回值是 n*factorial(n-1),如此来实现递归调用
3、。 三、综合应用题 3 【正确答案】 (1)添加语句: friend class TestClass2 ; (2)添加语句: TestClassl(float a, float b) (3)添加语句: TestClassl(float a) (4)添加语句: result=sqrt(p X-q X)*(p Xq X)+(p Yq Y)*(p Yq Y); 【试题解析】 在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的 main主函数开始入手,可以看出程序通过调用类 TestClass实现各种输出操作。 解题思路 (1)题目 1要求 “
4、声明 TestClass2类为 TestClassl类的友元类 ”。 C+中声明友元类的一般形式为 friend类名;,所以这里补全 “friend class TestClass2; ”。 (2)题目 2要求 “完成类的构造函数,分别对成员变量赋值 ”。程序中 TestClassl类的构造函数缺少定义,构造函数首部的一般格式为:构造函数名 (类型 l形参 1,类型 2形参 2, ) ,所以在第 2个标识下补全 “TestClassl(float a, float b)”。 (3)题目 3要求 “完成类的构造函数,分别对成员变量赋值 ”。同理,第三个标识下补全 “TestClassl(float a)”。 (4)题目 4要求 “完成计算平面上两点之间的距离函数 Distance”。题目中已经给出了计算方法, X坐标之差的平方与 Y坐标之差的平方之和的开方。利用 C+中的开方函数 sqn补全函数中的两点之间的距离。即 “result=sqrt(p X-q X)*(p X-q X)+(p Y-q Y)*(p Y-q Y); ”。