首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请使用菜单命令或直接用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
22
问题
请使用菜单命令或直接用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://jikaoti.com/ti/67E0FFFM
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列关于多继承.二义性的描述中,错误的是()。
要把高级语言编写的源程序转换为目标程序,需要使用()。
设有下列二叉树(如下图所示)对此二叉树中序遍历的结果是()。
下面程序输出的结果是#include<iostream.h>voidmain(){inti;inta[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;<3;i++)cout<
数据库的设计通常可以分为这样4个步骤:需求分析、概念设计、【】和物理设计。
在C++语言的面向对象程序设计框架中,【】是程序的基本组成单元。
算法的空间复杂度是指()。
下列叙述中正确的是
在软件生产过程中,需求信息的给出是
程序流程图中的菱形框表示的是【】。
随机试题
肝硬化最突出的临床表现是()
根据我国仲裁法的规定,在不同的情况下仲裁庭可以作出不同的裁决。下列有关仲裁裁决的说法哪些是正确的?
滑升模板施工高层建筑物时,现浇楼板的浇筑方法有以下()几种。
多用于地形变化不太复杂的丘陵地区的城市用地竖向规划方法是()。
以下各类金融资产不属于货币市场工具的是()。
在改革开放新的发展阶段,我国学校体育出现的特点中,不正确的是()。
宪法附则足指宪法对于特定事项需要特殊规定而作出的附加条款。下列关于宪法附叫的表述错误的一项是()。(北航2010翻译硕士)
尽管垄断组织的形式多样,但它们在本质上是一样的,即
[*]
Pleaseremember(post)______theletteronyourwaytoschool.
最新回复
(
0
)