1、国家二级 C+机试(操作题)模拟试卷 111及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi l cpp,该程序运行时有错误,请改正错误,使得程序正常运行。并使程序输出结果为: ABCDEF ABCDEF ABCDEF 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include void main() *error* char S1=“ABC ”DEF”; *error* char s2=”ABC DEF”; *error* char S3=”ABC”+ ”DEF”; cout #define
2、M 2 #define N 4 void fun(int aMN, int*sum) void main() int xMN=7, 6, 5, 2, 4, 2, 8, 3); int s; fun(x, C1ass TestClassl *1* public: *2* X=a; Y=b: *3* X=a ; Y=0 ; void print() coutaij)k=j, 求得每一行的最小值 s+=aik; 最小值求和 *sam=s; 返回求和值 【试题解析】 (1)该程序功能是求二维数组每行元素中的最小值,并计算它们的和值。本题解题思路基本可以分为 两重循环,外重循环为对二维数组的所有行进行循
3、环,内重循环为对每一行内进行列循环,求出每一行中的最小值。最后求出这些最小值的和。 (2)从已给部分源程序的 main主函数开始入手,核心函数 void fun(int aMN,int*sum)中的 a参数为二维数组, sum为要求得的和。 解题思路 (1)依次访问每一行的元素。 (2)在对每一行的访问过程中选出最小数。 (3)将选出的最小数求和。 三、综合应用题 3 【正确答案】 (1)添加语句: friend class TestClass2; (2)添加 语句: TestClassl(float a, float b) (3)添加语句: TestClassl(float a) (4)添加
4、语句: result=sqrt(p X-q x)*(p Xq X)+(p Yq Y)*(p Yq Y); 【试题解析】 在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的 main主函数开始入手,可以看出程序通过调用类 TestClass实现各种输出操作。 解题思路 (1)题目 l要求 “声明 TestClass2类为 TestClassl类的友元类 ”。 C+中声明友元类的一般形式为 friend类名;,所以这里补全 “friend class TestClass2; ”。 (2)题目 2要求 “完成类的构造函数,分别对成员变量赋值
5、”。程序中 TestClassl类的构造函数缺少定义,构造函数首部的一般格式为:构造函数名 (类型 1形参 l,类型 2形参 2, ) ,所以在第 2个标识下补全 “TestClassl(floata,floatb)”。 (3)题目 3要求 “完成类的构造函数,分别对成员变量赋值 “。同理,第三个标识下补全 “TestClassl(float a)”。 (4)题目 4要求 “完成计算平面上两点之间的距离函数 Distance”。题目中已经给出了计算方法, X坐标之差的平方与 Y坐标之差的平方之和的开方。利用 C+中的开方函数 sqrt补全函数中的两点之间的距离。即 “result=-sqrt(p X-q X)*(p Xq x)+(p Y-q Y)*(p Y-q Y); ”。