二级C++分类模拟112.docx

上传人:李医生 文档编号:11681402 上传时间:2021-08-30 格式:DOCX 页数:6 大小:15.40KB
返回 下载 相关 举报
二级C++分类模拟112.docx_第1页
第1页 / 共6页
二级C++分类模拟112.docx_第2页
第2页 / 共6页
二级C++分类模拟112.docx_第3页
第3页 / 共6页
二级C++分类模拟112.docx_第4页
第4页 / 共6页
二级C++分类模拟112.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《二级C++分类模拟112.docx》由会员分享,可在线阅读,更多相关《二级C++分类模拟112.docx(6页珍藏版)》请在三一文库上搜索。

1、二级C+分类模拟112(总分:100.00 ,做题时间:90分钟)、基本操作题(总题数:1,分数:30.00)1.请使用VC6或使用【答题】菜单打 下的工程projl ,该工程中含有一个源程序文件 开projl其中位于每个注释“ ERROR projl.cpp o*found*结果为:123456789 10”的下一行语句,不要改动程序中的其注意:只能修改注释“ / ERROR他内容。*found* / projl.cpp #include using namespace std; class MyClass public: MyClass(int len)array = new intlen

2、; arraySize = len; for (int i = 0; i arrayi = i+1;MyClass()/ ERRORV arraySize; i +)round delete arrayi;void Print() const (V arraySize; i +)for (int i = 0;i / ERROR -found* cin arrayi cout endl;J private: int * array;int arraySize;);int main() / ERROR found*MyClass obj;obj.Print(); return 0;分数:30.00

3、)正确答案:()解析: delete array;cout arrayi H;MyClass obj(10);答案考生文件夹考点本题考查MyClass类,其中涉及构造函数、析构函数、输出语句、动态 数组和语句初始化。一般考到类时就会涉及构造函数,要注意构造函数的定义方法。析构函 数就是考查delete语句的用法,其一般形式为:delete上要释放的指针。解析语法错误,使用delete语句删除一个指针时,直接把指针变量的名称放在delete口后 面即可。 考查考生对输入、输出语句的运用。使用cout进行数据输出操作,一般格式为:cout var ; o其中, var代表一个变量,”称为提取运算符

4、,该语句的含义是,将用户输入的数据保存到var 中。 考查语句的初始化,我们来看MyClass类的构造函数: MyClass (int len)array = new intlen;/给数组动态分配空间,大小为len arraySize = len; / 赋值for (int i = 0;iV arraySize; i +)arrayi = i + 1; /循环给数组赋值,从1到10请注意:形参len没有定义默认值,因此要想使array动态数组里依次存放1, 2, 3, 4, 5, 6, 7, 8, 9,10,就是要给len赋值为10。delete语句是最常考的知识点,用于释放指针变量,其一般

5、形式为:delete上要释放的指针。二、简单应用题(总题数:1,分数:30.00)2.请使用VC6或使用【答题】菜单打开proj2下的工程proj2 ,此工程中声明的Array是一个表 示数组的类。一个Array对象可以包含多个整型元素。Array的成员说明如下:成员函数add 用于向数组的末尾添加一个元素;成员函数get用于获取数组中指定位置的元素;数据成员a 表示实际用于存储数据的整型数组;数据成员size表示数组的容量,数组中的元素个数最多不 能超过size;数据成员num表示当前数组中的元素个数。SortedArray是Array的派生类,表示有序数组。SortedArray重新定义了

6、 Array中的add函数,以 确保有序数组中的元素始终按照升序排列。请在程序中的横线处填写适当的代码,然后删除横 线,以实现上述类定义。此程序的正确输出结果应为:10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动/ *found*,J o #include using namespace std; class Array public:Array(unsigned int s)size = s;num= 0;a = new ints;virtual

7、 Array。delete口 a;virtual void add(int e) if (num V size) num +;) )int get(unsigned int i) const (if (i = size) return;inti=O,j;while (i num) if (e i; H / *found/ *foundbreak;)i+;)if (i = num)ai = e;num +;);void fun(Array& a) (int i;for (i = 10; i = 1; i-) a.add (i);) 10;i+)cout V V a.get(i) )cout V

8、V endl;int main()Array a(10);fun(a);SortedArray sa(10);fun(sa);return 0;(分数:30.00)正确答案:()解析:(1)anum=e;(2) Array(s) aDMD-1 ai=e答案考生文件夹考点本题考查数组类Array及Array的派生类SortedArray ,其知识点涉及构 造函数、析构函数、虚函数和动态数组。一般考到函数时,首先要看函数名,通过函数名称能 大概知道该函数的功 能,比如Array类中的virtual void add(int e)函数,看到这个函数我们能得到 如下信息。 有关键字virtual ,说

9、明该函数是虚函数,在Array类的派生类里肯定会有对add函数的定 义。有关键字void ,说明此函数没有返回值。add的意思是添加,它的形参是inte,那么我们大概可以猜到该函数的功能是把整型数值e 添加到数组a中。解析考查的是虚函数virtual void add(int e) 的定义,即添加一个整型数e到anum中。主要考查的是Array类的派生类SortedArray类的构造函数的定义,定义之前要对基础类初始 化。(3)因为SortedArray类是排序类,所以数组a中的元素要从小到大排序。在if(e a叩条件下,要 把i后的元素逐个往后移一位,因此此处为aU=aD-1 o 主要考查虚

10、函数virtual void add(int e)在派生类SortedArray类中的定义,把插入的数据放在数 组a的第i+1个位置,即ai=e ;。三、综合应用题(总题数:1,分数:40.00)3,请使用VC6或使用【答题】菜单打开proj3下的工程文件proj3 ,此工程包含一个源程序文件 proj3.cpp ,其中定义了用于表示二维向量的类MyVector ;程序应当显示(6,8)。但程序中有缺失 部分,请按照以下提示,把缺失部分补充完整: 在“力-found* ”的下方是构造函数的定义,它用参数提供的坐标对x和y进行 初始化。 在“ *才*-found* 的下方是减法运算符函数定义中的

11、一条语句。两个二维向量相减生 成另一个二维向量:其X坐标等于两向量X坐标之差,其Y坐标等于两向量Y坐标之差。 在u/ *3* *found*”的下方,语句的功能是使变量v3获得新值,它等于向量v1与向量v2之和。注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“ Found*“ o/ proj3.cppinclude using std:ostream; using std:cout;using std:endl;class MyVector /表示二维向量的类double x;/X 坐标值double y; /Y 坐标值 public:MyVector (doubl

12、e i = 0.0, double j = 0.0); /构造函数MyVector operator + (MyVector j); /重载运算符 +friend MyVector operator - (MyVector i, MyVector j); /重载运算符-friend ostream& operator (ostream& os, MyVector v); /重载运算符 V V); (double i, double j): x(i),y(j) MyVector MyVector:operator + (MyVector j) return MyVector (x + j. x,

13、 y + j. y); )MyVector operator - (MyVector i, MyVector j)/ *2 *found* return MyVector ();ostream& operator (ostream& os, MyVector v) os T v.x v.y );/ 输出向量 v 的坐标returnos;)int main() (MyVector v1(2,3), v2(4,5), v3;/ *3*foundv3 = ;cout V V v3 endl; return 0;分数:40.00)正确答案:()解析:(1 )MyVector:MyVector(2)i.

14、x-j.x , i.y-j-yv1+v2答案考生文件夹考点本题考查二维向量类MyVector ,其中涉及的知识点有构造函数,重载运 算符+、-、o在类外定义构造函数时,语法和定义其他类函数一样,前面要加上类名和作 用域符号。重载运算符函数要注意其返回值类型和参数类型。解析主要考查的是构造函数,在类外定义构造函数时要使用类名和作用域,即 MyVector:MyVector o主要考查重载运算符“的返回语句,返回值应为向量i和j的差,即 MyVector(i.x-j.x , i,y-j-Y) ; (3)主要考查重载运算符的使用,由题目可知v3是M和v2的 和,前面我们已经重新定义了运算符,所以在这里直接使用语句v3=v1+v2 ;即可。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1