1、国家二级 C+机试(操作题)模拟试卷 64及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,使它能得出正确的结果。 本程序要求屏幕输出: n=99 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 1 #include 2 *error* 3 Class TestClass() 4 5 public: 6 *error* 7 void TestClass(); 8 TestClasS(int n) 9 10 cout 2 void MergeAndSort(int s, int e, int
2、a, int m, int n) 3 4 5 6 int main() 7 8 int data20, i ; 9 int a=1, 3, 5, 6); i0 int b=2, 4, 5, 7, 11, 13); 11 cout 2 #include 3 class Rectangle 4 ( 5 public: 6 int left f right l top,bottom; 7 *1* 8 9 10 left=1, 11 right=r ; 12 top=t ; 13 bottom=b; 14 15 *2* 16 17 left=rc 1eft; 18 right=rc right; 19
3、 top=rc top ; 20 bottom=rc bottom; 21 22 float Diagonal() 23 24 *3* 25 return 26 27 int Girth() 28 29 *4* 30 return 31 32 33 j; 34 int main() 35 36 Rectangle rect(20, 50, 40, 80); 37 Rectangle rect2(rect); 38 coutaj,取小的 aj 18 19 Sk+: aJ+; 20 21 22 while( im) Sk+ =ei+; 如果数组 e后面还有没有加进来的元素,则加进去 23 whil
4、e(jn)Sk+=aJ+; 如果数组 a后面还有没有加进来的元素,则加进去 【试题解析】 函数 MergeAndSort(int s, int e1, int a, int m, int n)实现将数组 e和数组 a的合并,这两个数组已经照由小到大的顺序排列,因此只需逐个比较 e数组和 a数组的元素值,每次取两个元素值的小的,如果相等则取两个当中的任意一个均可。 解题思路 (1)由审题分析可知,可设置循环来逐个读取 e数组和 a数组的元素值,然后选择小的元素放在数组 s中,如果相等则取 a数组元素或 e数组元素均可,可以利用ifelse语句来进行判断。 (2)由于数组 e和数组 a长度可能不一
5、定相同,因此在循环结束之后,还需要把长度长的数组的剩余的元素添加到 s数字中,即循环结束后如果 e数组内还有 字符的话把 e数组内剩下的字符添加到 s数组内,同样如果 a数组内还有字符的话把 a数组内剩下的字符添加到 s数组内。 三、综合应用题 3 【正确答案】 (1)添加语句: Rectangle(int 1, int r, intt, int b) (2)添加语句: Rectangle(Rectangle&rc) (3)将 “return”补充完整为: return sqrt(right-left)*(right-left)+(bottom-top)*(bottom-top); (4)将
6、“return”补充完整为: return 2*(right-left)+(bottomtop); 【试题解析】 类 Rectangle是描述了一个矩形,私有成员分别描述矩形的坐标值,构造函数给私有数据成员赋初值。 Rectangle类的 Diagonal()和 Girth()分别计算矩形的对角线长度和周长,可通过矩形的长和宽计算得到。 解题思路 (1)构造函数函数名和类名一致,构造函数可以重载,即多个构造函数有相同的名字不同的参数,显然题目当中两个构造函数均有参数,由函数体体内 “left=1;right=r; top=t; bottom=b; ”,说明 l, r, t, b为构造函数的参数
7、,因此第 1标识处应添加 “Rectangle(int l, int r,int t,int b)”。 (2)和题目 1一样,构造函数名和类名一致,函数体内: “left=re 1eft;right=rc right; top=re top; bottom=rc bottom; ”,显然 re是 Rect对象,故该构造函数的参数为 rc对象,故第 2标识处应添加 “Rectangle(Rectangle&rc)”。 (3)由对象的 left、 right、 top、 bottom值可以求得矩形的长和宽,因此可采用勾股定理计算对角线长度,即第 3标识处补充完整为: return sqrt(right 1eft)*(rightleft)+(bottomtop)*(bottomtop)。 (4)同样的周长可由长和宽的数值计算得到,长和宽之和的两倍即周长,第 4标识处补充完整为: return 2*(right-left)+(bottom-top)。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1