首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请使用菜单命令或直接用VC6打开考生文件夹下的工程proj2,其中有元素类Element和集合类MySet的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的输出结果应为: 0 3 5 8 0 3 8
请使用菜单命令或直接用VC6打开考生文件夹下的工程proj2,其中有元素类Element和集合类MySet的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的输出结果应为: 0 3 5 8 0 3 8
admin
2016-08-19
37
问题
请使用菜单命令或直接用VC6打开考生文件夹下的工程proj2,其中有元素类Element和集合类MySet的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的输出结果应为:
0 3 5 8
0 3 8
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“//**********found**********”。
1 #inClude
2 #include
3 using namespace std;
4 #define MaxElement 100
5 class Element{ //“元素”类
6 public:
7 int n;
8 Element(int i=0):n(i){)
9 };
10 class MySet {//“集合”类
11 Element*element; //指向存储元素的数组的指针
12 int size; //数组大小
13 int counter; //数组中元素的个数
14 int current; //用于表示扫描位置,及当前被扫描元素在数组中的下标
15 public:
16 MySet():element(new Element[100]),size(100),counter(0),cur-rent(0){)
17 ~MySet(){delete[]element;}
18 void add(Element ele); //向集合中添加一个元素,保持由小到大的顺序。
19 void remOve(Element ele); //删除集合中指定的元素
20 void ScanFirst(){current=0;)//将扫描位置定位于首元素
21 //**********found**********
22 void scanNext(){_____;}//将扫描位置定位于下一个元素
23 Element get()const{return ele-ment[current];}//返回当前被扫描的元素
24 bool isEnded()const{return cur-rent>=counter;}//如果已经没有更多的元素可扫描了,返回true。
25 void show(); //显示集合中所有元素
26 };
27 void MySet::add(Element ele){
28 int pos=counter; //pos用于确定元素应插入的位置
29 while(pos>0){ //从后往前寻找该位置
30 if(ele.n>element[pos-1].n)break; //找到应插入的位置,退出循环
31 //**********found**********
32 if(_______)return;//发现相同元素,终止添加过程。
33 pos--;
34 }
35 if(counter>=size){ //如果没有足够空间,扩充空间(增加100个元素的容量)
36 Element木tmp=element;//tmp指向原来的数组
37 //**********found**********
38 element=______;//申请一个新的数组,容量扩大100个元素的容量
39 for(int i=0;i
=tmp
;
40 size+=100;
41 delete[]tmp;
42 }
43 for(int i=counter;i>pos;i--)element
=element[i-1];//后移相关元素,腾出存放新元素的空间
44 element[pos]=ele;//插入新元素counter++;
45 }
46 void MySet::show(){
47 scanFirst(); //扫描位置定位于首元素
48 while(!isEnded()){
49 cout<
50 //**********found**********
51 _____;//扫描定位于下一个元素
52 }
53 cout<
54 }
55 void MySet::remove(Element ele){
56 int pos=counter-1; //pos用于确定要删除的元素的位置
57 while(pos>=0){//从后往前寻找该位置
58 if(ele.n>element[pos].n)return;//集合中没有该元素,终止删除过程。
59 if(ele.n==element[pos].n)break; //找到删除的元素,退出循环。
60 pos--;
61 }
62 if(pos<0)return; //集合中没有该元素,终止删除过程。
63 for(int i=pos;i
64 element
=element[i+1]; //删除该元素,后面的元素顺序前移。
65 counter--;
66 if(counter+l 00<=size){ //如果未使用的存储单元超过100,缩减存储空间,减少100个单元
67 Element*tmp=element;
68 element=new Element[size-100];
69 for(int i=0;i
70 element
=tmp
;
71 size-=100;
72 delete[]tmp;
73 }
74 }
75 int main(){
76 MySet set;
77 set.add(Element(3));
78 set.add(Element(8));
79 set.add(Element(5));
80 set.add(Element(0));
8l set.show();
82 set.remove(Element(5));
83 set.remove(Element(4));
84 set.add(Element(8));
85 set.show();
86 return 0;
87 }
选项
答案
(1)++current (2)ele.n==element,[pos-1].n (3)new Elementl[size+100] (4)scanNext()
解析
(1)主要考查考生对数组和自增运算符的掌握情况,扫描数组元素,将扫描位置定位到下一个元素,需要将下标加1,使用自增运算符。
(2)主要考查考生对数组元素的访问和比较运算符的掌握,pos初值为数组元素个数,所以访问element元素使用pos-1,避免访问数组越界;另外需要判断插入元素与当前元素是否相等来决定程序是否返回,使用相等运算符。
(3)主要考查考生对动态内存分配的掌握,题意需要申请一个新的数组,并将当前数组容量size扩大100个,所以答案为new Element[size+100]。
(4)主要考查考生对类成员函数的掌握,show函数用来输出数组的所有元素,所以从首元素开始一次输出,输出一个元素需要将扫描定位到下一个元素,对应于前面的scan-First(),使用成员函数scanNext()最合适不过了。
转载请注明原文地址:https://www.kaotiyun.com/show/QZNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
需求分析最终结果是产生()。
下面程序的输出结果是【】。#include〈iostream〉usingnamespacestd;voidf(intx){if(x){cout.put(’0’+x
以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每个学生的平均分数并输出,程序如下:#include<iostream>usingnamespacestd;intmain(){i
有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是structnode{chardata;structnode*next;}a,b,*p=&a,*q=&b
如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是
以下叙述中正确的是
应在下列程序画线处填入的正确语句是()。#include<iostream>usingnamespacestd;clasBase{public:voidfun(){
在进行了任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态,其中用于是否进行了非法操作的函数名是()。
下列叙述中错误的是()。
如果一个工人可以管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备”之间存在【】的联系。
随机试题
患者男性,21岁,学生,10天前曾到北京旅游。因发热2天于2003年5月6日入院。体温在39℃左右,伴头痛及全身酸痛,全身乏力,轻度腹泻为稀便,一日2~3次;干咳,时有胸闷,自觉有呼吸困难。听诊:两肺呼吸音粗,肺底可闻少许湿哕音。血常规:WBC3.6×1
急性细菌性咽一扁桃体炎有别于其他上呼吸道感染的突出表现是
按照《测绘产品检查验收规定》,测绘产品验收工作的组织实施机构是()。
窗口和对话框的区别之一是对话框不能移动位置,而窗口可以。 ( )
下列人员中不得担任期货公司独立董事的有()。
A公司生产和销售甲产品,6月份现金收支的预计资料如下:(1)6月1日的现金余额为520000元。(2)产品售价117元/件,4月份销售10000件,5月份销售12000件,6月预计销售15000件,7月预计销售20000件。根据经验,
矩阵的秩为()。
下面心理学研究中属于函数型实验的是
A.条件(1)充分,但条件(2)不充分。B.条件(2)充分,但条件(1)不充分。C.条件(1)和条件(2)单独都不充分,但条件(1)和条件(2)联合起来充分。D.条件(1)充分,条件(2)也充分。E.条件(1)和条件(2)单独都不充分,条件(1)和
FireworksIfyouhaveeverbeentoanaerialfireworksshowatanamusementpark,baseballgame,FourthofJulycelebration
最新回复
(
0
)