首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请使用菜单命令或直接用VC6打开考生文件夹下的工程proj2,其中有元素类Element和集合类MySet的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的输出结果应为: 0 3 5 8 0 3 8
请使用菜单命令或直接用VC6打开考生文件夹下的工程proj2,其中有元素类Element和集合类MySet的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的输出结果应为: 0 3 5 8 0 3 8
admin
2020-10-21
64
问题
请使用菜单命令或直接用VC6打开考生文件夹下的工程proj2,其中有元素类Element和集合类MySet的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的输出结果应为:
0 3 5 8
0 3 8
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“//**********found **********”。
#include
#include
using namespace std;
#define MaxElement 100
class Element{ //“元素”类
public:
int n;
Element(int i=0):n(i){}
};
class MySet{//“集合”类
Element水element;//指向存储元素的数组的指针
int size://数组大小
int counter;//数组中元素的个数
int current; //属于表示扫描位置,及当前被扫描元素在数组中的下标
public:
MySet():element(new Element[100]),size(100),counter(0),current(0){}
~MySet(){delete[]element;}
void add(Element ele);//向集合中添加一个元素,保持由小到大的顺序。
void remove(Element ele);//删除集合中指定的元素
void scanFirst(){current=0;}
//将扫描位置定位于首元素
//**********found**********
void scanNext(){_____;} //将扫描位置定位于下一个元素
Element get()const{return element[current];} //返回当前被扫描的元素
bool isEnded()const{return current>=counter;} //如果已经没有更多的元素可扫描了,返回true。
void show();//显示集合中所有元素
}:
void MySet::add(Element ele){
int DOs=counter; //pos用于确定元素应插入的位置
while(pos>0){ //从后往前寻找该位置
if(ele.n>element[pos-1].n)break;//找到应插入的位置,退出循环
//**********found**********
if(______)return; //发现相同元素,终止添加过程。
pos______:
}
if(counter>=size){ //如果没有足够空间,扩充空间(增加100个元素的容量)
Element*tmp=element;//tmp指向原来的数组
//********** found**********
element=_______; //请一个新的数组,容量扩大100个元素的容量
for(int i=0;i
=tmp
;
size+=100:
delete[]tmp;
}
for(int i=counter;i>Dos;i--)element
=element[i-1]; //后移相关元素,腾出存放新元素的空间
element[Dos]=ele;//插入新元素
counter++;
}
void MySet::show(){
scanFirst();//扫描位置定位于首元素
while(!isEnded()){
coat<
//**********found**********
_______;//扫描定位于下一个元素
}
cout<
}
void MySet::remove(Element ele){
int Dos=counter-1; //pos用于确定要删除的元素的位置
while(pos>=0){ //从后往前寻找该位置
if(ele.n>element[DOs].n)return;//集合中没有该元素,终止删除过程。
if(ele.n=element[DOs].n)break;//找到删除的元素,退出循环。
pos______;
}
if(pos<0)return;//集合中没有该元素,终止删除过程。
for(int i=pos;i
=element[i+1]; //删除该元素,后面的元素顺序前移。
counter______;
if(counter+100<=size){ //如果未使用的存储单元超过100,缩减存储空间,减少100个单元
Element* tmp=element;
element=new Element[size-100];
for(int i=0;i
=tmp
;
size-=100;
delete[]trap;
}
}
int main()t
MySet set;
set.add(Element(3));
set.add(Element(8));
set.add(Element(5));
set.add(Element(0));
set.show();
set.remove(Element(5));
set.remove(Element(4));
set.add(Element(8));
set.show();
return 0;
}
选项
答案
(1)++current (2)ele.n==element[pos-1].n (3)new Element[size+100] (4)scanNext()
解析
(1)主要考查考生对数组和自增运算符的掌握情况,扫描数组元素,将扫描位置定位到下一个元素,需要将下标加1,使用自增运算符.
(2)主要考查考生对数组元素的访问和比较运算符的掌握,pos初值为数组元素个数,所以访问element元素使用pos-1,避免访问数组越界;另外需要判断插入元素与当前元素是否相等来决定程序是否返回,使用相等运算符。
(3)主要考查考生对动态内存分配的掌握,题意需要申请一个新的数组,并将当前数组容量size扩大100个,所以答案为new Element[size+100]。
(4)主要考查考生对类成员函数的掌握,show函数用来输出数组的所有元素,所以从首元素开始一次输出,输出一个元素需要将扫描定位到下一个元素,对应于前面的scanFirst(),使用成员函数scanNext()最合适不过了。
转载请注明原文地址:https://kaotiyun.com/show/M8yp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列对模板的声明中,正确的是()。
有如下程序:#include<iostream>usingnamespacestd;classA{public:A(){cout<<"A";)};classB{publi
下列定义语句中,错误的是()。
下列叙述中正确的是()。
已知主函数中通过如下语句序列实现对函数模板swap的调用:inta[10],b[10];swap(a,b,10);下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是()。
有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。
有两个关系R和S如下:由关系R通过运算得到关系S,则所使用的运算为()。
数据库设计中反映用户对数据要求的模式是()。
已知将运算符“+”和“*”作为类Complex的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于()。
若为Fraction类重载前增1运算符++,应在类体中将其声明为()。
随机试题
A.风中经络证B.风邪犯肺证C.风寒湿痹证D.太阳中风证突起面部麻木,口眼歪斜,微恶风寒,脉浮缓。为
统计标准化
嗜酸性粒细胞增多症外周血嗜酸性粒细胞绝对值大于下列哪一项
女性,33岁,出现右侧腰部剧烈疼痛,经尿常规及B超检查诊断为肾绞痛,应选哪种药物止痛
可以转变为酪氨酸的是脱羧基生成广氨基丁酸的是
监理工程师(包括总监理工程师、驻地监理工程师、专业监理工程师)是一种()。
背景某机电安装公司承接一项炼油厂的塔体群安装工程,工程内容包括:各类塔体就位、各类管道、自动控制和绝热工程等。其中最高塔体为42m,最重塔体102t。合同工期为三个月,合同约定:如果合同工期违约一天罚款10000元,如每提前一天奖励5000元。
一般资料:求助者,女性,66岁,某工厂退休职工。案例介绍:求助者一年前睡觉时突然憋醒,胸闷气短,觉得自己马上就不行了,送入急诊后诊断为呼吸暂停综合症,自己非常后怕,因为自己的哥哥就是夜里突发心脏病去世的,医生也说这种病如不及时发现就会憋死。求助者立
()主要是指秘书人员在自己的职责范围之内,或根据领导的授权,调整和改善部门之间、工作之间、人与人之间的关系,促使机关活动趋向同步化、和谐化,以实现其共同目标的行为过程。
一些人有这样一种思想误区,即只讲“实现自身价值”,不讲“提高自身价值”。人当然天生就有价值,这价值应当重视,但还有待提高。提高不能靠包装与炒作,必须要真正提高质量,具体表现无非就是德与才。这两方面的提高,只有通过克己修身。“玉不琢,不成器”,人不克己修身,
最新回复
(
0
)