题库 题库

【简答题】

请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中包含了类IntegerSet和主函数main的定义。一个IntegerSet对象就是一个整数的集合,其中包含0个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组elem的前若干单元中。成员函数add的作用是将一个元素添加到集合中(如果集合中不存在该元素),成员函数remove从集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数remove。在main函数中给出了一组测试数据,此时程序的正确输出结果应为:
2 3 4 5 27 28 31 66 75
2 3 4 5 6 27 28 31 56 75
2 3 4 5 6 19 27 28 31 66 75
3 4 5 6 19 27 28 31 66 75
3 4 5 6 19 27 28 31 66 75
要求:
补充编制的内容写在“//***********333***********”与“//***********666***********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//IntegorSet.h
#ifndef INTEGERSET
#define INTEGERSET
#include
using namespace std;
const int MAXELEMENTS=100;
//集合最多可拥有的元素个数
class IntegerSet{
int elem[MAXELEMENTS];
//用于存放集合元素的数组
int counter; //用于记录集合中元素个数的计数器
puhlic:
IntegerSet():counter(0){}
//创建一个空集合
IntegerSet(int data[],int size);
//利用数组提供的数据创建一个整数集合
void add(int element);
//添加一个元素到集合中
void remeve(int element);
//删除集合中指定的元素
int getCount()const{return counter;}
//返回集合中元素的个数
int getElement(int i)const{retum elem[i];}//返回集合中指定的元素
void show()const;
};
void WriteToFile(char*);
#endif
//main.cpp
#include”IntegerSet.h”
#include
IntegerSet::IntegerSet(int data[],int size):counter(0){
for(int i=0;i<SIZE;I++)
add(data[i]);
}
}
void IntegerSet::add(int element){
int j;
//从后往前寻找第一个小于等于element的元素
for(j=counter;j>0;j-)
if(element>=elem[j一1])break;
//如果找到的是等于element的元素,说明要添加的元素已经存在,直接返回
if(j>0)
if(element==elem[j-1])return;
//如果找到的是小于element的元素,j就是要添加的位置
//该元素及其后面的元素依次后移,腾出插入位置
for(int k=counter;k>j;k一)
elem[k]=elem[k一1];
elem[j]=element;//将element插入到该位置
counter++; //计数器加l
}
void IntegerSet::remove(int element){
//***************333***************
//***************666***************
void IntegerSet::show()const{
for(int i=0;i<GETCOUNT();I++)
cout<<SETW(4)<
cout<
}
int main(){
int d[]={5,28,2,4,5,3,2,75,27,66,31};
IntegerSet S(d,11);S.show();
S.add(6); s.show();
S.add(19); S.show();
S.remove(2); s.show();
S.add(4); S.show();
writeToFile(””);
return 0;
}

参考答案

For(int i=0:i<CountEr;i++)
//遍历整个集合(数组elem)
if(element==elem[i])
//女il果element等于elem[i]
{
for(intj=i;j<counter-1;j++)
//从i开始遍历集合elem
etem[j]=elem[j+1];
//把elemi i+1]赋值给elem[j]
counter--;//elem长度自减
re|urn;//返吲

相关试题

单选题 下列程序的运行结果是( )。
#include class Loeation{
private:
int X,Y;
public: void init(int=0,int=0);
void valueX(int val){X=val;} int valueX(){returnx;}
void valueY(int val){Y=val;} int valueY(){return Y;}};
void Location::init(int initX,int initY) {X=initX;
Y=initY4}
void main(X
{Location A,B;
查看答案
单选题 软件生命周期中的活动不包括( )。 查看答案
单选题 有如下程序:
#inClude using namespaCe std; Class Sample{
friend long fun(Sample S); publiC:
Sample(10ng A.{x=a;} private:
long X;
}; long fun(Sample S){
if(S.x<2)return l;
return S.X*fun(Sample(s.x-1)); }
int main(  ) {
int sum=0;
for(int i=0;i<6;i++) {sum+=fun(Sample(i));}
Cout<<SUM:&NBSP;&NBSP;&NBSP;
}
执行这个程序的输出结果是(  )。
查看答案
单选题 数据库设计中反映用户对数据要求的模式是( )。 查看答案
单选题 Tilil程序的运行结果是( )。
#include void main()
{
int i=1:
while(i<=8)
if(++i%3 1=2)continue: else eout<
}
查看答案
单选题 有如下类声明:
class SAMPLE
{
int n:
public:
SAMPLE(int i=0):n(i){}
void setValue(int nO);
};
下列关于9etValue成员函数的定义中,正确的是(  )。
查看答案
单选题 下面程序的运行结果为( )。
#include class A
static int n;
public:
A(){n=1;}
A(int num){n=hum;} void print(){cout<<N;}&NBSP;&NBSP;&NBSP;
int A::n=2;
void main() {
A a,b(3); a.print(); b.print();
cout<
查看答案
单选题 一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是(  )。 查看答案
单选题 有如下类定义:
class MyClass
{
public:
private:
______________________________________
int data;
};
若要为MyClass类重载流输入运算符“>>”,使得程序中可以“cin>>obj;”的形式改变MyClass类的对象0bj中数据成员data的值,则横线处的声明语句应为( )。
查看答案
单选题 下列关于运算符重载的叙述中,错误的是( )。 查看答案
单选题 设int a=10,b=11,C=12;,表达式(a+B.<C&&B==C的值是(&NBSP; 查看答案
单选题 下列( )是C++语言的有效标识符。 查看答案
单选题 有如下程序:
#include
using namespace std;
class Base
{
public:
void funl(){cout<<”Base\n”;}
virtual void fun2(){eout<<”Base\n”;}
};
class Derived:public Base{
public:
void funl(){eout<<”Derived、n”;}
void fura(){eout<.<”Derived\n”;}
};
void f(Base&B.}b.funl();b.ftm2();}
int main()
{
Derived obj;
f(obj);
return 0;
}
执行这个程序的输出结果是(  )。
查看答案
单选题 对于一个类定义,下列叙述中错误的是( )。 查看答案
单选题 为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。 查看答案
单选题 F列关于栈的叙述正确的是( )。 查看答案
单选题 下面对静态数据成员的描述中,正确的是( )。 查看答案
单选题 有如下程序:
#inClude using namespaCe std; Class MyClass{
publiC:
MyClass(int X):val(X){}
void Print()Const}tout<<”Const:val=”<<VAL<<’\T’;}&NBSP;&NBSP;&NBSP; Print(){tout< private:
int val; };
int main(){
Const MyClass objl(10); MyClass obj2(20);
objl.Print(); obj2.Print(); retum 0;
}
执行这个程序的输出结果是( )。
查看答案
单选题 在数据管理技术发展的三个阶段中,数据共享最好的是(  )。 查看答案
单选题 下面对静态数据成员的描述中,正确的是( )。 查看答案