1、国家二级 C+机试(操作题)模拟试卷 149及答案与解析 一、基本操作题 1 请使用菜单命令或直接使用 VC6打开考生文件夹下的工程 projl。程序中位于每个 ERROR*found*下的语句行有错误,请加以更正,不得修改程序的其他部分。更正后程序的输出应该是:两点之间的距离为: 7 5231 注:意:只能修改每个 ERROR*found*下的那一行,不要改动程序中的其他内容。 #include #include using namespace std; class Point private: double x, y, public: Point(double xx, double YY)
2、( x=xx; y=yy; ERROR*found* double MyDistance(Point Number num2(“68”); Number&num3=numl Add(hum2); coutnum3 GetNum(); writeToFile(“C: test V”); return 0; proj 3 t proj 3 h clasS Number private: char*num;具体数字, num0表示最高位的数 public: 一 Number(); Number(char*n); Number(Number&n); Number(int n); Number Add(
3、Number n); char*GetNum()(return num; ; void writeToFile(const char*path); 国家二级 C+机试(操作题)模拟试卷 149答案与解析 一、基本操作题 1 【正确答案】 (1)friend double MyDistance(Point&a, Point b); (2)double dx=a xb x; (3)double dy=a yb y; 【试题解析】 本题考查 Point类,其中涉及友元函数,成员变量的访问。 【解题思路】 (1)主要考查考生对友元函数的掌握,由于 MyDistance函数在类定义体外定义时,未加类名
4、Point修饰作用域,可知 MyDistance并不是类 Point的成员函数,但是声明是在 Point定义体内部,所以应该是友元函数,另外函数 MyDistance可以直接操作 Point对象的成员变量,所以进一步确定是友元函数,使用 friend关键字修饰。 (2)主要考查考生对友元函数的掌握和成员变量的访问,在函数 MyDistance中,为了计算 a、 b两点的距离,需要计算两个点的横纵坐标差值,所以需要访问 a、 b的横纵坐标,将 a的横坐标减去 b的横坐标,得到差值 dx,再计算 dy。 (3)主要考查考生对友元函数的掌握和成员变量的访问,在函数 MyDistance中,为了计算
5、a、 b两点的距离,需要计算两个点的横纵坐标差值,所以需要访问 a、 b的横纵坐标,将 a的纵坐标减去 b的纵坐标,得到差值 dy,再与 dx一起计算距离。 二、简单应用题 2 【正确答案】 (1)charstrlen(s)+1 (2)deletestr (3)istrlen(str) (4)str0 【试题解析】 本题考查 MyString类,涉及构造函数、析构函数、动态内存的分配与释放、字符串长度函数。 【解题思路】 (1)主要考查构造函数中成员变量的赋值、动态内存的分配和字符串长度函数的使用,成员变量 str是字符串指针,赋值时使用 new分配内存空间,为了存放字符串尾部的空字符,需要分
6、配的容量为字符串 str长度 +1,另外使用 strlen获取 str的长度。 (2)主要考查考生对析构函数定义的掌握和动态内存的释放, MyString类的成员str是在构造函数中使用 new分配的,所以在析构函数中需要使用 delete释放。 (3)主要考查考生对字符串库函数调用的掌握,使用 strlen获取 str的长度,判 断下标 i是否越界。 (4)如果下标 i越界,根据题意返回第一个元素 8tr0。 三、综合应用题 3 【正确答案】 int i=atoi(hum); int j=atoi(n GetNum(); return Number(i+j); 【试题解析】 本题考查的是 N
7、umber类,其中涉及 C语言的库函数、构造函数的使用、成员函数的使用。 【解题思路】 主要考查考生对库函数、对象成员和构造函数使用的掌握情况,函数 Add的功能是将函数参数 n与自身相加,返回相加后的 Number对象, Number类中成员字 符串。 aura是用来表示十进制的整数,所以将两个 Number相加需要首先将字符串aura转化为整数,这里需要使用库函数 atoi,将调用对象的 hum和对象 n的 aura转化为十进制整数 i, j,在转化对象 n的 aura成员时,由于 hum是 Number类的私有成员,所以不能直接使用,而应该通过成员函数 GetNum()返回 num;得到十进制数 i、 j后,再用 i与 j的和构造成 Number对象,所以需要使用 Number的参数为整数的构造函数,即 Number(int i),构造 Number对象后返回。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1