[计算机类试卷]国家二级C++机试(操作题)模拟试卷148及答案与解析.doc

上传人:orderah291 文档编号:497208 上传时间:2018-11-28 格式:DOC 页数:9 大小:39KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(操作题)模拟试卷148及答案与解析.doc_第1页
第1页 / 共9页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷148及答案与解析.doc_第2页
第2页 / 共9页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷148及答案与解析.doc_第3页
第3页 / 共9页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷148及答案与解析.doc_第4页
第4页 / 共9页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷148及答案与解析.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、国家二级 C+机试(操作题)模拟试卷 148及答案与解析 一、基本操作题 1 请使用菜单命令或直接使用 VC6打开考生文件夹下的工程 pmj1,其中有 “MP3播放器 ”类 MP3Player和主函数 main的定义。程序中位于每个ERROR*found*下的语句行有错误,请加以更正。更正后程序的输出应该是: 天籁一 1 黑色 注意:只能修改每个 ERROR*found*下的那一行:不要改动程序中的其他内容。 #include #include using namespace std; class MP3 Player “MP3播放器 ”类 char*type; 型号 char* color;

2、 颜色 public: ERROR*found* MP3 Player(const char* ty=NULL, const char *co) ERROR*found* if(ty=NULL) type: NULL; else type=new charstrlen(ty)+1; strcpy(type, ty); if(co=NULL) color=NULL; else color=new charstrlen(CO)+1; strcpy(color, co); 一 MP3Player() if(type)deletetype; ERROR *found* i f(color)delete

3、 color; const char*getType()constre turn type; const char*getColor()constre turn color; ) , int main() MP3Player myplayer(“天籁 -1”, “黑色 ”); cout #include usiog namespace std; #define MaxElement 100 class Element “元素 ”类 public: int n; Element(int i=0): n(i) ; class MySet “集合 ”类 Element*element; 指向存储元素

4、的数组的指针 int Size;数组大小 int counter; 数组中元素的个数 int current; 用于表示扫描位置,及当前被扫描元素在数组中的下标 public: MySet(): element(new Element1 00), size(1 00), counter(0), current(0) 一 MySet()deleteelement; void add(Element ele); 向集合中添加一个元素,保持由小到大的顺序。 void remove(Element ele); 删除集合中指定的元素 void scanFirst()current=0 ; )将扫描位置定

5、位于首元素 *found* void scanNext()(_; ) 将扫描位置定位于下一个元素 Element get()constreturn ele- mentcurrent; 返回当前被扫描的元素 bool isEnded()constreturn current=counter; ) 如果已经没有更多的元素可扫描了,返回 true。 void show(); 显示集合中所有元素 ; void MySet: add(Element ele) int pos=counter; pos用于确定元素应插入的位置 while(pos0) 从后往前寻找该位置 if(ele nelementpos

6、一 1 n) break; 找到应插入的位置, 退出循环 *found* if()return; 发现相同元素,终止添加过程。 Pos一一; if(counter=size) 如果没有足够空间,扩充空间 (增加 100个元素的容量 ) Element*tmp=element; tmp指向原来的数组 *found* element=_; 申请一个新的数组,容量扩大 100个元素的容量 for(int i=0; ipos; i一一 )elementi=elementi一 1; 后移相关元素,腾出存放新元素的空间 elementpos=ele,插入新元素 counter+; void MySet:

7、show()f scanFirst(); 扫描位置定位于首元素 while(!isEnded() cout=0)从后往前寻找该位置 if(ele nelenntpos n)return; 集合中没有该元素,终止删除过程。 if(ele n=elementpos n) break; 找到删除的元素,退出 循环。 pos一一; if(pos=20070619 20070621= “, date2 show(); cout= ; date3 show(); cout= “; date4 show(); cout #include using namespace std; class Date int

8、 year; int month; int day; public: Date(int Y, int m, int d): year (Y), month(m), day(d) int getYear()constreturn year; ) int getMonth()constreturn month; ) int getDay()constreturn day; ) void show(ostream&os=cout)j bool operator=(Date date)const return year=date year month =date month day=date day;

9、 bool isLessThan(Date date)const; ; void writeToFile(const char*path); 国家二级 C+机试( 操作题)模拟试卷 148答案与解析 一、基本操作题 1 【正确答案】 (1)MP3Player(const char*ty=NULL, const char*co=NULL) 或 MP3Player(const char*ty, const char*co) (2)if(ty=NULL) (3)if(color)deletecolor; 【试题解析】 本题考查 MP3Player类,其中涉及构造函数的参数默认值、相等运算符与赋值运算

10、符的区别、动态分配内存的释放。 【解题思路】 (1)主要考查考生对 函数参数的默认值的掌握, C+中的函数可以提供默认实参,如果一个形参具有默认实参,那么它之后的所有形参都必须有默认实参,题目中ty提供了默认实参,所以 co也必须提供默认实参,或者将 ty的默认实参去掉。 (2)主要考查考生对相等运算符与赋值运算符区别的掌握,题意是判断指针 ty是否为 NULL,而不是将 ty赋值为 NULL,修改赋值运算符为相等运算符。 (3)主要考查动态分配内存的释放,动态分配的内存在释放时, new分配的内存需要使用 delete释放,而 new分配的内存需要使用 delete。 二、简单应用 题 2

11、【正确答案】 (1)+current (2)ele.n=elementpos一 1 n (3)new Elementsize+100 (4)scanNext() 【试题解析】 本题考查自增运算符、相等运算符,动态内存分配、成员函数的使用。 【解题思路】 (1)主要考查考生对数组和自增运算符的掌握情况,扫描数组元素,将扫描位置定位到下一个元素,需要将下标加 1,使用自增运算符。 (2)主要考查考生对数组元素的访问和比较运算符的掌握, pos初值为数组元素个数,所以访问 element元素 使用 pos一 1,避免访问数组越界;另外需要判断插入元素与当前元素是否相等来决定程序是否返回,使用相等运算

12、符。 (3)主要考查考生对动态内存分配的掌握,题意需要申请一个新的数组,并将当前数组容量 size扩大 100个,所以答案为 new Elementsize+loo。 (4)主要考查考生对类成员函数的掌握, show函数用来输出数组的所有元素,所以从首元素开始一次输出,输出一个元素需要将扫描定位到下一个元素,对应于前面的 scan First(),使用成员函数 scanNext()最合适不过了。 三、综合应用题 3 【正确答案】 bool less=false; if(yeardate getYear()Il year=: date getYear()&monthdate getMonth()

13、lI year= =date getYear()&month=date getMonth ()& daydate getDay() less=true; return less; 【试题解析】 本题考查的是 Date类,其中涉及布尔变量、成员函数的使用、逻辑运算符和关系运算符的使用。 【解题 思路】 主要考查考生对成员函数、关系运算符和逻辑运算符的掌握,成员函数isLessThan是将该对象本身与参数 date进行比较,返回是否小于的布尔值。为了比较 isLessThan的调用对象与 date的大小,需要依次比较 year、 month、 day三个整数,由于 date的 year、 month、 day都是私有成员,所以不能在 islessThan中直接使用 date的私有成员,而是应该使用 date的共有成员函数来返回这些值,再将本身的成员与返回值比较,同时,为了比较时间大小,应该首先将 year进行比较,接着是 month,最后是 day,并将比较结果暂存布尔变量 less中,最后返回。

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

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1