首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请使用菜单命令或直接用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
25
问题
请使用菜单命令或直接用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://kaotiyun.com/show/QZNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
为使程序的输出结果为:Base::fun那么应在下列程序画线处填入的正确语句是()。#include<iostream>usingnamespacestd;classBase{pub
下面程序输出的结果是#include<iostream.h>voidmain(){inti;inta[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;<3;i++)cout<
下列程序的输出结果是【】。#include<iostream>usingnamespacestd;classTest{public:Test(){cnt++;}~Test(
若有以下程序:#include<iostream>usingnamespacestd;classA{private:inta;public:voidseta(intx
类模板不同于函数模板,类模板只可用【】型参数。
Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向【】的设计方法。
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是
下列叙述中错误的是()。
重新定义标识符的作用域规定是外层变量被隐藏,______变量是可见的。
随机试题
IftheOlympicGamesareahistoryofmankind,wrestlingistheprologue(序幕).WhentheancientGamesoftheOlympiadwereborn,
A.AFPB.CEAC.CA25D.CA153E.PSA患者,男,70岁。尿频、尿流缓慢、排尿困难3年。选择前列腺癌的肿瘤标志
A.竞争性抑制B.非竞争性抑制C.反竞争性抑制D.不可逆性抑制E.以上均正确抑制剂与酶活性中心外的必需基团结合.不影响酶与底物的结合.属于
依照《民事诉讼法》的规定,以下哪些期间为不变期间?()
正向市场是远期月份合约的价格大于近期月份合约的价格的市场。()
应该建立以美术教师自评为主,()等共同参与的评价制度。
国家机关及其工作人员作出下列何种行为造成损害的,受害人有权取得国家赔偿?()。
程序流程图(PFD)中的箭头代表的是()。
A、 B、 C、 A
Teachersneedtobeawareoftheemotional,intellectual,andphysicalchangesthatyounga-dultsexperience.Andtheyalsoneed
最新回复
(
0
)