题库 题库
🏠 天天查询 > 题库 > C++

C++

简答题 使用VC6打开考生文件夹下的工程kt5_1,此工程包含一个源程序文件kt5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
(1,2)
5,6
(6,9)
源程序文件kt5_1.cpp清单如下:
#include
classA{
public:
A(inti,intj){a=i;b=j;}
/****************found*******************/
voidMove(intx,inty){a+=x;b+=y}
voidShow(){cout<<"("<
private:
inta,b;
};
classB:privateA
{
public:
/****************found*******************/
B(inti,intj,intk,intl):(i,j){x=k;y=l;}
voidShow(){cout<
voidfun(){Move(3,5);}
/****************found*******************/
voidf1(){Show();}
private:
intx,y;
};
voidmain()
{
Ae(1,2);
e.Show();
Bd(3,4,5,6);
d.fun();
d.Show();
d.f1();
}
查看答案
简答题 请编写一个函数intpattern_index(charsubstr[],charstr[]),该函数执行含通配符"?"的字符串的查找时,该通配符可以与任一个字符匹配成功。当子串substr在str中匹配查找成功时,返回子串substr在str中的位置,否则返回值为0。要求使用for循环实现。输出结果如下:
子串起始位置:5
注意:部分源程序已存在文件kt5_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数pattern_index的花括号中填写若干语句。
文件kt5_2.cpp的内容如下:
#include
intpattern_index(charsubstr[],charstr[])
{
}
voidmain()
{
char*substring,*string;
intsame;
substring="???gram";
string="thisprogramreturnindexofsubstring";
same=pattern_index(substring,string);
if(same)
cout<<"子串起始位置:"<
else
cout<<"匹配不成功"<
}
查看答案
简答题 使用VC6打开考生文件夹下的工程kt5_3,此工程包含一个源程序文件kt5_3.cpp,其中定义了用于表示复数的类comp,但类comp的定义并不完整。请按要求完成下列操作,将类comp的定义补充完整。
(1)定义comp的构造函数,函数含参数x和y,它们都是int型的数据,默认值都为0,请使用参数列表的形式分别将类数据成员a和b初始化x和y的值。请在注释“//**1**”之后添加适当的语句。
(2)完成类comp的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句;
(3)完成类comp的友元函数friendcompplus(comp&x,comp&y)的定义,该函数首先要定义一个comp类的对象c,然后将参数x和y的数据成员a与b分别相加并分别赋值给c的成员a和b,最后返回c的值,请在注释“//**3**”之后添加适当的语句。输出结果如下:
10+20i
2+3i
result:12+23i
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt5_3.cpp清单如下:
#include
classcomp
{inta;
intb;
public:
//**1**
friendcompplus(comp&x,comp&y);
voidinput(intx,inty)
{//**2**}
voidoutput()
{cout<
compplus(comp&x,comp&y)
{//**3**
c.b=x.b+y.b;
returnc;}
voidmain()
{compx(10,20),y,z;
y.input(2,3);
z=plus(x,y);
x.output();
y.output();
cout<<"result:";
z.output();}
查看答案
简答题 使用VC6打开考生文件夹下的工程kt4_1,此工程包含一个源程序文件kt4_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
1:
weight:5
age:0
2:
weight:7
age:9
源程序文件kt4_1.cpp清单如下:
#include
classanimal
{
public:
/****************found*******************/
friendvoidsetvalue(animal&,int);
/****************found*******************/
viodprint();
protected:
intitsweight;
intitsage;
};
voidanimal::print()
{
cout<<"weight:"<<ITSWEIGHT<<ENDL;< p>
cout<<"age:"<<ITSAGE<<ENDL;< p>
}
voidsetvalue(animal&ta,inttw)
{
ta.itsweight=tw;
ta.itsage=0;
}
voidsetvalue(animal&ta,inttw,inttn)
{
ta.itsweight=tw;
ta.itsage=tn;
}
voidmain()
{/****************found*******************/
animalpeppy
setvalue(peppy,5);
cout<<"1:"<<ENDL;< p>
peppy.print();
setvalue(peppy,7,9);
cout<<"2:"<<ENDL;< p>
peppy.print();}
查看答案
简答题 请编写一个函数intSeqSearch(intlist[],intstart,intn,intkey),该函数从start开始,在大小为n的数组list中查找key值,返回最先找到的key值的位置,如果没有找到则返回-1。请使用for循环实现。
注意:部分源程序已存在文件kt4_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数SeqSearch的花括号中填写若干语句。
文件kt4_2.cpp的内容如下:
#include
intSeqSearch(intlist[],intstart,intn,intkey)
{
}
voidmain()
{
intA[10];
intkey,count=0,pos;
cout<<"Enteralistof10integers:";
for(pos=0;pos<10;pos++)
{
cin>>A[pos];
}
cout<<"Enterakey:";
cin>>key;
pos=0;
while((pos=SeqSearch(A,pos,10,key))!=-1)
{
count++;
pos++;
}
cout<<key<<"occurs"<<count<<<"inthelist."<<endl;< p>
}
</key<<"occurs"<<count<<<"inthelist."<<endl;<>
查看答案
简答题 使用VC6打开考生文件夹下的工程kt4_3,此工程包含一个源程序文件kt4_3.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整。
(1)补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。请在注释“//**1**”之后添加适当的语句。
(2)完成类vector的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句。
(3)完成类vector的友元函数frienddoubleMultiply(vector&x,vector&y)的定义,先定义double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值,将请在注释“//**3**”之后添加适当的语句。输出结果如下:
(10,20)
(2,3)
80
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序如下:
#include
classvector
{
inta;
intb;
public:
//**1**
voidinput(intx,inty)
{//**2**}
voidoutput()
{cout<<'('<<A<<','<<B<<")"<<ENDL;}< p>
frienddoubleMultiply(vector&x,vector&y);
};
doubleMultiply(vector&x,vector&y)
{
//**3**
c=x.a*y.a+x.b*y.b;
returnc;
}
voidmain()
{
vectorx(10,20),y;
doubled;
y.input(2,3);
d=Multiply(x,y);
x.output();
y.output();
cout<<D<<ENDL;< p>
}
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt1_1,此工程包含一个源程序文件kt1_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:
Whichact(aorb)?b
act1
act2
Bact3
Bact4
Bend
源程序文件kt1_1.cpp清单如下:
#include
classA
{public:
virtualvoidact1(){cout<<"act1\n";act2();}
voidact2(){cout<<"act2\n";act3();}
voidact3(){cout<<"Aact3\n";act4();}
virtualvoidact4{cout<<"Aact4\n";act5();}
voidact5(){cout<<"Aend\n";}
};
classB:publicA
{
voidact3(){cout<<"Bact3\n";act4();}
voidact4(){cout<<"Bact4\n";act5();}
voidact5(){cout<<"Bend\n";}
};
voidmain(void)
{
charc;
A*a;
cout<<"Whichact(aorb)?";
cin<<C;< p>
if(c=='a')
a=newA;
else
a=newB;
a->act1();
deletea;
查看答案
简答题 简单应用题
请编写一个函数voidfun(charss[]),该函数将字符串ss翻转,如ss为“123abc”则翻转后为“cba321”。注意:用数组方式及for循环来实现该函数。
注意:部分源程序已存在文件kt1_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。
文件kt1_2.cpp的内容如下:
#include
#include
voidfun(charss[]);
voidmain()
{chars[80];
cout<<"请输入字符串:";
cin>>s;
fun(s);
cout<<"逆序后的字符串:"<<S<<ENDL;}< p>
void fun(charss[])
{
}
查看答案
简答题 综合应用题
使用VC6打开考生文件夹下的工程test1_3,此工程包含一个源程序文件kt1_3.cpp,其中定义了类Cat,但类Cat的定义并不完整。请按要求完成下列操作,将类Cat的定义补充完整。
(1)定义类Cat的保护数据成员itsAge用于表示年龄,它是int型的数据。请在注释“//**1**”之后添加适当的语句。
(2)完成成员函数GetAge()的类外定义,返回成员的itsAge值,请在注释“//**2**”之后添加适当的语句。
(3)完成成员函数SetAge(intage)的类外定义,把数据成员itsAge赋值为参数age的值,请在注释“//**3**”之后添加适当的语句。
(4)完成成员函数Meow的类外定义,使其输出字符串“meow.”到屏幕上。请在注释“//**4**”之后添加适当的语句。
输出结果如下:
meow.
kittyisacatwhois5yearsold.
meow.
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序如下:
#include
classCat
{
public:
intGetAge();
voidSetAge(intage);
voidMeow();
protected:
//**1**
};
intCat::GetAge()
{
//**2**
}
voidCat::SetAge(intage)
{
//**3**
}
voidCat::Meow()
{
//**4**
}
voidmain()
{
Catkitty;
kitty.Meow();
kitty.SetAge(5);
cout<<"kittyisacatwhois";
cout<<KITTY.GETAGE();< p>
cout<<"yearsold.\n";
kitty.Meow();
}
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt2_1,此工程包含一个源程序文件kt2_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
Vehiclemessage
Carmessage
Vehiclemessage
源程序文件kt2_1.cpp清单如下:
#include
classvehicle
{
intwheels;
floatweight;
public:
voidmessage(void){cout<<"Vehiclemessage\n";}
};
classcar:publicvehicle
{
intpassenger_load;
public:
voidmessage(void){cout>>"Carmessage\n";}
};
classtruck:publicvehicle
{
intpassenger_load;
floatpayload;
public:
intpassengers(void){returnpassenger_load;}
};
voidmain()
{
vehicle*unicycle;
unicycle=newvehicle;
unicycle.message();
deleteunicycle;
unicycle=newcar;
unicycle->message();
deleteunicycle;
unicycle=newtruck;
unicycle->message();
deleteunicycle;
}
查看答案
简答题 简单应用题
编写类AA的成员函数intCompare(AAb),该函数用于比较*this与b的大小,若两者含有元素的个数n相同,并且数组中前n个元素值对应相同,则认为两者相等返回1,否则返回0。注意:用数组方式及for循环来实现该函数。输出结果如下:
a=b
a<>c
注意:部分源程序已存在文件kt2_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数Compare的花括号中填写若干语句。
文件kt2_2.cpp的内容如下:
#include
#include
classAA{
int*a;
intn;
intMS;
public:
voidInitAA(intaa[],intnn,intms)
{
if(nn>ms)
{\cout<<"Error!"<<ENDL;< p>
exit(1);}
MS=ms;
n=nn;
a=newint[MS];
for(inti=0;i< p>
}
intCompare(AAb);
};
intAA::Compare(AAb)
{
}
voidmain()
{AAa,b,c;
intx[]={1,2,3,4,5};
inty[]={1,2,3,6,7};
intz[]={1,2,5,7,9};
a.InitAA(x,3,5);
b.InitAA(y,3,5);
c.InitAA(z,3,5);
if(a.Compare(b))
cout<<"a=b"<<ENDL;< p>
else
cout<<"a<>b"<<ENDL;< p>
if(a.Compare(c))
cout<<"a=c"<<ENDL;< p>
else
cout<<"a<>c"<<ENDL;}< p>
查看答案
简答题 综合应用题
使用VC6打开考生文件夹下的工程test17_3,此工程包含一个源程序文件kt2_3.cpp,其中定义了用于表示点的类Point和表示内容的类Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按要求完成下列操作,将它们的定义补充完整。
(1)定义类Point的构造函数,请使用参数列表的形式将成员函数x和y分别初始化为参数x1和y1的值。请在注释“//**1**”之后添加适当的语句。
(2)完成类Text的构造函数Text(char*str)的定义,将char型的str指向的内容赋值给text并且输出str所指向的内容,请在注释“//**2**”之后添加适当的语句。
(3)定义类CircleWithText的构造函数CircleWithText(intcx,intcy,char*msg),int型的cx和cy用于赋值给x和y,char型的指针*msg用于赋值给text,请在注释“//**3**”之后添加适当的语句。
输出结果如下:
Point:34
hello
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序如下:
#include
#include
classPoint
{intx,y;
public:
//**1**
{cout<<"Point:"<<X<<''<<Y<<'\N';}< p>
~Point(){}};
classText
{chartext[100];
public:
Text(char*str)
{//**2**}
~Text(){}};
classCircleWithText:publicPoint,publicText
{public:
//**3**
{}
~CircleWithText(){}};
voidmain()
{CircleWithTextcm(3,4,"hello");}
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt5_1,此工程包含一个源程序文件kt5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
(1,2)
5,6
(6,9)
源程序文件kt5_1.cpp清单如下:
#include
classA{
public:
A(inti,intj){a=i;b=j;}
/****************found*******************/
voidMove(intx,inty){a+=x;b+=y}
voidShow(){cout<<"("<<A<<","<<B<<")"<<ENDL;}< p>
private:
inta,b;
};
classB:privateA
{
public:
/****************found*******************/
B(inti,intj,intk,intl):(i,j){x=k;y=l;}
voidShow(){cout<<X<<","<<Y<<ENDL;}< p>
voidfun(){Move(3,5);}
/****************found*******************/
voidf1(){Show();}
private:
intx,y;
};
voidmain()
{
Ae(1,2);
e.Show();
Bd(3,4,5,6);
d.fun();
d.Show();
d.f1();
}
查看答案
简答题 简单应用题
请编写一个函数intpattern_index(charsubstr[],charstr[]),该函数执行含通配符"?"的字符串的查找时,该通配符可以与任一个字符匹配成功。当子串substr在str中匹配查找成功时,返回子串substr在str中的位置,否则返回值为0。要求使用for循环实现。输出结果如下:
子串起始位置:5
注意:部分源程序已存在文件kt5_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数pattern_index的花括号中填写若干语句。
文件kt5_2.cpp的内容如下:
#include
intpattern_index(charsubstr[],charstr[])
{
}
voidmain()
{
char*substring,*string;
intsame;
substring="???gram";
string="thisprogramreturnindexofsubstring";
same=pattern_index(substring,string);
if(same)
cout<<"子串起始位置:"<<SAME<<ENDL;< p>
else
cout<<"匹配不成功"<<ENDL;< p>
}
查看答案
简答题 综合应用题
使用VC6打开考生文件夹下的工程kt5_3,此工程包含一个源程序文件kt5_3.cpp,其中定义了用于表示复数的类comp,但类comp的定义并不完整。请按要求完成下列操作,将类comp的定义补充完整。
(1)定义comp的构造函数,函数含参数x和y,它们都是int型的数据,默认值都为0,请使用参数列表的形式分别将类数据成员a和b初始化x和y的值。请在注释“//**1**”之后添加适当的语句。
(2)完成类comp的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句;
(3)完成类comp的友元函数friendcompplus(comp&x,comp&y)的定义,该函数首先要定义一个comp类的对象c,然后将参数x和y的数据成员a与b分别相加并分别赋值给c的成员a和b,最后返回c的值,请在注释“//**3**”之后添加适当的语句。输出结果如下:
10+20i
2+3i
result:12+23i
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt5_3.cpp清单如下:
#include
classcomp
{inta;
intb;
public:
//**1**
friendcompplus(comp&x,comp&y);
voidinput(intx,inty)
{//**2**}
voidoutput()
{cout<<A<<'+'<<B<<"I"<<ENDL;}};< p>
compplus(comp&x,comp&y)
{//**3**
c.b=x.b+y.b;
returnc;}
voidmain()
{compx(10,20),y,z;
y.input(2,3);
z=plus(x,y);
x.output();
y.output();
cout<<"result:";
z.output();}
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt6_1,此工程包含一个源程序文件kt6_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
Constructor2
Constructor1
i=0
i=10
Destructor
源程序文件kt6_1.cpp清单如下:
#include
classCSample
{
inti;
public:
CSample(){cout<<"Constructor1"<< p>
CSample(intval){cout<<"Constructor2"<< p>
~CSample(){cout<<"Destructor"<<ENDL;}< p>
voiddisp();
};
/**********found**********/
voiddisp()
{cout<<"i="<<I<<ENDL;}< p>
voidmain()
{
CSample*a,b(10);
/**********found**********/
a->disp();
/**********found**********/
b->disp();
}
查看答案
简答题 简单应用题
编写函数fun(),它的功能是利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
xn+1=cos(xn)
迭代步骤如下:
(1)取x1初值为0.0。
(2)x0=x1,把x1的值赋给x0。
(3)x1=cos(x0),求出一个新的x1。
(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2)。
(5)所求x1就是方程cos(x)-x=0的一个实根,做为函数值返回。
程序输出结果Root=0.739085。
注意:部分源程序已存在文件kt6_2.cpp中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
文件kt6_2的内容如下:
#include
#include
#include
floatfun()
{
}
voidmain()
{cout<<"Root="<<FUN()<<ENDL;}< p>
查看答案
简答题 cout<<"总分最高者--"<
}
voidmain()
{Student*A[3];
inti,n=3;
for(i=0;i
{A[i]=newStudent;
A[i]->getinformation();}
for(i=0;i
{A[i]->computesum();}
firstname(A,3);}
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt7_1,此工程包含一个源程序文件kt7_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
Constructor1
Constructor1
Constructor1
Destructor
Constructor2
Destructor
x=0
x=5
Destructor
Destructor
源程序文件kt21_1.cpp清单如下:
#include
classB
{intx;
public:
B(){x=0;cout<<"Constructor1"<<ENDL;}< p>
B(inti){x=i;cout<<"Constructor2"<<ENDL;}< p>
~B(){cout<<"Destructor"<<ENDL;}< p>
/**********found**********/
~B(inti){cout<<I<<"BEDESTRUCTOR"<<ENDL;}< p>
voidprint(){cout<<"x="<<X<<ENDL;}};< p>
voidmain()
{B*ptr;
ptr=newB[2];
/**********found**********/
ptr[0]=B(0);
ptr[1]=B(5);
/**********found**********/
for(inti=0;i<2;)
ptr[i].print();
delete[]ptr;}
查看答案
简答题 简单应用题
编写一个函数intcharnum(charfn[10]),该函数以只读方式打开文件fn,,通过统计,返回文件中字符的个数,请使用while循环实现计数功能。
注意:部分源程序已存在文件kt7_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数charnum的花括号中填写若干语句。
文件kt7_2.cpp的内容如下:
#include
#include
#include
intcharnum(charfn[10]);
voidmain()
{intnum;
num=charnum("abc.txt");
cout<<"num="<<NUM<<ENDL;}< p>
intcharnum(charfn[10])
{
}
查看答案
简答题 综合应用题
使用VC6打开考生文件夹下的工程kt7_3,此工程包含一个源程序文件kt7_3.cpp,其中含有一个类Circle的定义,但该类的定义并不完整。请按要求完成下列操作,将类Circle的定义补充完整。
(1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。请在注释“//**1**”之后添加适当的语句。
(2)为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序
Circlec;
c.SetRadius(5);
c.Print();
将输出:Thecirclehasradiusof5!
请在注释“//**2**”之后添加适当的语句。
(3)完成友元函数voidCompareR(Circle*c1,Circle*c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用if-else结构完成。请在注释“//**3**”之后添加适当的语句。
输出结果如下:
Thecirclehasradusof5!
Thecirclehasradiusof10!
c1<C2< p>
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt7_3.cpp清单如下:
#include
classCircle{
public:
Circle():radius(5){}
//**1**
voidSetRadius(intr){radius=r;}
intGetRadius(){returnradius;}
//**2**
friendvoidCompareR(Circle*c1,Circle*c2);
private:
intradius;};
voidCompareR(Circle*c1,Circle*c2)
{//**3**
cout<<"c1>c2"<<ENDL;< p>
else
if((c1->GetRadius())==(c2->GetRadius()))
cout<<"c1=c2"<<ENDL;< p>
else
if((c1->GetRadius())<(c2->GetRadius()))
cout<<"c1<C2"<<ENDL;}< p>
voidmain()
{Circlec1;
c1.SetRadius(5);
c1.Print();
Circlec2(10);
c2.Print();
CompareR(&c1,&c2);}
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt8_1,此工程包含一个源程序文件kt8_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
f1functionofderive
f2functionofbase
f4functionofbase
源程序文件kt8_1.cpp清单如下:
#include
classbase
{ public:
/**********found**********/
voidf1(){cout<<"f1functionofbase"<<ENDL;}< p>
virtualvoidf2(){cout<<"f2functionofbase"<<ENDL;}< p>
virtualvoidf3(){cout<<"f3functionofbase"<<ENDL;}< p>
voidf4(){cout<<"f4functionofbase"<<>
/**********found**********/
classderive::publicbase
{ voidf1(){cout<<"f1functionofderive"<<ENDL;}< p>
voidf2(intx){cout<<"f2functionofderive"<<ENDL;}< p>
voidf4(){cout<<"f4functionofderive"<<>
voidmain()
{ base*p;
deriveobj2;
/**********found**********/
p=obj2;
p->f1();
p->f2();
p->f4(); }
查看答案
简答题 简单应用题
已知考生的记录由学号和学习成绩构成,N名考生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的考生记录,通过形参返回主函数(规定只有一个最低分)。已给予出函数的首部,请完成该函数。
注意:部分源程序已存在文件kt8_2.cpp中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
文件kt8_2.cpp的内容如下:
#include
#include
#include
#defineN10
typedefstructss
{charnum[10];
ints;
}STU;
voidfun(STUa[],STU*s)
{
}
voidmain()
{STU
a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;
fun(a,&m);
cout<<"*****Theoriginaldate*****"<<ENDL;< p>
cout<<"Thelowest:"<<M.NUM<<M.S<<ENDL;}< p>
查看答案
简答题 综合应用题
使用VC6打开考生文件夹下的工程kt8_3,此工程包含一个源程序文件kt8_3.cpp,该文件设计了用于输出乘法九九表的类。请认真阅读已有的代码,按要求完成下列操作,将程序补充完整。
(1)定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。请在注释“//**1**”之后添加适当的语句;
(2)完成类Table的成员函数print()的定义,该函数以"x*y=z"的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现,在注释“//**2**”之后添加适当的语句;
(3)完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕,请在注释“//**3**”之后添加适当的语句;
(4)补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt8_3.cpp清单如下:
#include
#include
classTable
{//**1**
intz;
public:
voidprint(intx,inty,intz);};
voidTable::print(intx,inty,intz)
{//**2**}
classTable9:publicTable
{public:
voidprint();};
voidTable9::print()
{//**3**
intx,y,z;
for(i=1;i<10;i++)
{for(j=1;j<I+1;J++)< p>
{x=i;
y=j;
z=i*j;
Table::print(y,x,z);}
printf("\n");}}
main()
{//**4**
return0;}
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt12_1,此工程包含一个源程序文件kt12_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:
100
源程序文件kt12_1.cpp清单如下:
#include
template
classpair
{ Tvalue1,value2;
public:
pair(Tfirst,Tsecond)
{value1=first;value2=second;}
/*****************found*****************/
chargetmax(); };
/*****************found*****************/
Tpair::getmax()
{ Tretval;
/*****************found*****************/
retval=value1>value2??value1:value2;
returnretval; }
voidmain()
{ pairmyobject(100,75);
cout<<MYOBJECT.GETMAX()<<>
查看答案
简答题 简单应用题
请编写函数fun(),其功能是将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除。字符串中剩余的字符所形成的一个新的字符串放在t所指的数组中。
例如:s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值虽为奇数,但元素所在的下标为偶数,因此必需删除;字符1的ASCII码值为奇数,所在数组中的下标也为奇数,不删除,最后t所指的数组中的内容应是135。
请勿修改主函数main和其他函数中的任何内容,仅在函数su的花括号中填写若干语句。
文件kt12_2.cpp的内容如下:
#include
#include
#include
#include
voidfun(char*s,chart[])
{
}
voidmain()
{ chars[100],t[100];
cout<<"PleaseenterstringS:"<<ENDL;< p>
gets(s);
fun(s,t);
puts(t); }
查看答案
简答题 综合应用题
使用VC6打开考生文件夹下的工程kt12_3。此工程包含一个kt12_3.cpp,其中定义了类ARRAY,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)完成类ARRAY的带一个参数的构造函数,参数i为int型,如果i不是正数则输出错误信息并退出,否则申请int型的大小为i的空间,然后把i赋值给类的数据成员num。请在注释“//**1**”之后添加适当的语句。
(2)完成类ARRAY的拷贝初始化构造函数,注意解决重复删除的问题,请在注释“//**2**”之后添加适当的语句。
(3)完成类ARRAY的重载的运算符函数[],参数i为int型,如果i超界则输出错误信息并退出,否则把下标为i的元素返回,请在注释“//**3**”之后添加适当的语句。
(4)完成类ARRAY的重载的运算符函数=,同样需要注意解决重复删除的问题,不能只是简单的赋值,请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt12_3.cpp清单如下:
#include
#include
classARRAY
{ private:
int*p,num;
public:
ARRAY(){p=newint[10],num=10;}
ARRAY(inti)
{ //**1**
{ cout<<"错误!数组长度应为正。\n";
exit(0); }
p=newint[i];
num=i; }
ARRAY(constARRAY&a);
int&operator[](inti);
~ARRAY(){deletep;}
ARRAY&operator=(constARRAY&a);
friendARRAYoperator+(ARRAY&a,ARRAY&b);
friendostream&operator<<(ostream&os,ARRAY&a); };
ARRAY::ARRAY(constARRAY&a)
{ //**2**
for(inti=0;i<NUM;I++)< p>
p[i]=a.p[i]; }
int&ARRAY::operator[](inti)
{ //**3**
{ cout<<"越界访问!";
exit(0); }
returnp[i]; }
ARRAY&ARRAY::operator=(constARRAY&a)
{ num=a.num;
p=newint[num];
for(inti=0;i<NUM;I++)< p>
p[i]=a.p[i];
//**4** }
ARRAYoperator+(ARRAY&a,ARRAY&b)
{ if(a.num!=b.num)
{ cout<<"数组长度不相同!"<<ENDL;< p>
exit(0); }
ARRAYt(a.num);
for(inti=0;i<A.NUM;I++)< p>
t.p[i]=a.p[i]+b.p[i];
returnt; }
ostream&operator<<(ostream&os,ARRAY&a)
{ inti=0;
for(;i<A.NUM;I++)< p>
{ cout<<A.P[I]<<'';< p>
if(!((i+1)%10))cout<<>
returnos; }
voidmain()
{ ARRAYa(3);
a[0]=a[1]=a[2]=3;
cout<<'a'<<A<<ENDL;< p>
ARRAYb(a);
cout<<'b'<<B<<ENDL;< p>
ARRAYc(2);
c=a+b+b;
cout<<'c'<<C<<ENDL;< p>
c=((b=(a+b))+c);
cout<<'a'<<A<<'B'<<B<<'C'<<C<<ENDL;< p>
a[7]=3;
cout<<>
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt13_1,此工程包含一个源程序文件kt13_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
5
5
源程序文件kt13_1.cpp清单如下:
#include
classA{
public:
/*****************found*****************/
staticintn=1;
A(){n++;};
~A(){n--;}; };
/*****************found*****************/
intn=0;
intmain(){
Aa;
Ab[3];
A*c=newA;
c=&a;
/*****************found*****************/
cout<<C.N<<ENDL;< p>
cout<<A::n<<endl;< p>
return0; }
查看答案
简答题 简单应用题
请编写一个函数sortnum(intnum),参数num是一个三位的整数,该函数将num的百位、十位和个位的数字进行重排,并返回由上述的三个数字组成的最大的三位数。
注意:部分源程序已存在文件kt13_2.cpp中。
如输入456后,输出结果如下:
654
请勿修改主函数main和其他函数中的内容,仅在函数sortnum的花括号中填写若干语句。
文件kt13_2.cpp的内容如下:
#include
intsortnum(intnum)
{
}
voidmain()
{ intnum;
intresult=0;
cout<<"请输入一个三位数";
cin>>num;
cout<<SORTNUM(NUM)<<>
查看答案
简答题 综合应用题
使用VC6打开考生文件夹下的工程kt11_3。此工程包含一个kt11_3.cpp,其中定义了类queue,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)完成类queue的无参数的构造函数的定义,要求把数据成员bl和el都初始化为0,同时输出queueinitialized。请在注释“//**1**”之后添加适当的语句。
(2)完成类queue的成员函数qput(intj)的定义,它的功能是把新的元素加入队列,过程是先依据bl的值判断数组是否已经满了,如果是就输出queueisfull,否则bl自加一,并且把参数j的值存入bl指向的数组元素中,请在注释“//**2**”之后添加适当的语句。
(3)完成类queue的成员函数qget()的定义,它的功能是把队列开头的元素提取出队列,并返回该值,过程是先比较el和bl的值判断队列是否已空,如果是就输出queueisempty,否则el自加一,并且把el指向的数组元素返回,请在注释“//**3**”之后添加适当的语句。
程序输出结果如下:
queueinitialized
queueinitialized
3311
4422
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt11_3.cpp清单如下:
#include
classqueue
{ intq[100];
intbl,el;
public:
queue();
voidqput(intj);
intqget(); };
queue::queue()
{ //**1** }
voidqueue::qput(intj)
{ //**2**
{ cout<<"queueisfull\n";
return; }
bl++;
q[bl]=j; }
intqueue::qget()
{ //**3**
{ cout<<"queueisempty\n";
return0; }
el++;
returnq[el]; }
voidmain()
{
queueaa,bb;
aa.qput(11);
bb.qput(22);
aa.qput(33);
bb.qput(44);
cout<<AA.QGET()<<""<<AA.QGET()<<"\N";< p>
cout<<BB.QGET()<<""<<BB.QGET()<<"\N";< p>
}
查看答案
简答题 改错题
使用VC6打开考生文件夹下的工程kt14_1,此工程包含一个源程序文件kt14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
A:noparameters
B:intparameter
A:noparameters
B:intparameter
C:intparameter
源程序文件kt14_1.cpp清单如下:
#include
classA
{ /*****************found*****************/
private:
A(){cout<<"A:noparameters\n";}
A(inta){cout<<"A:intparameter\n";} };
classB:publicA
{ public:
B(inta){cout<<"B:intparameter\n";} };
/*****************found*****************/
classC:publicB,publicA
{ public:
/*****************found*****************/
C(inta)::B(a){cout<<"C:intparameter\n";} };
voidmain()
{ Bb(1);
Cc(2); }
查看答案
简答题 简单应用题
编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。
例如:n为1000时,函数值应为s=153.909064。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
doublefun(intn)
{ main()
{ clrscr();
printf("s=%f\n",fun(1000)); }
查看答案
简答题 综合应用题
使用VC6打开考生文件夹下的工程kt14_3。此工程包含一个kt14_3.cpp,其中定义了二维坐标类Coordinate和三维坐标类ThreeDCoord,其中ThreeDCoord类由Coordinate类public派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1**”之后添加适当的语句。
(2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**”之后添加适当的语句。
(3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。
(4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员z。请在注释“//**4**”之后添加适当的语句。
输出结果如下:
[1,2]
[3,4,5]
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt14_3.cpp清单如下:
#include
classCoordinate
{ protected:
//**1**
public:
Coordinate(inta=0,intb=0);
//**2** };
Coordinate::Coordinate(inta,intb)
{ //**3** }
voidCoordinate::Display()const
{ cout<<'['<<X<<","<<Y<<']'<<>
classThreeDCoord:publicCoordinate
{ intz;
public:
ThreeDCoord(inta=0,intb=0,intc=0);
virtualvoidDisplay()const; };
//**4**
voidThreeDCoord::Display()const
{ cout<<'['<<X<<","<<Y<<","<<Z<<']'<<>
voidmain()
{ Coordinatec(1,2);
ThreeDCoordt(3,4,5);
c.Display();
t.Display(); }
查看答案
简答题 使用VC6打开考生文件夹下的工程kt4_1,此工程包含一个源程序文件kt4_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
1:              weight:5
age:0
2:                 weight:7
age:9
源程序文件kt4_1.cpp清单如下:
#include
classanimal
{
public:
/****************found*******************/
friendvoidsetvalue(animal&,int);
/****************found*******************/
viodprint();
protected:
intitsweight;
intitsage;
};
voidanimal::print()
{
cout<<"weight:"<<itsweight<<endl;< p=""></itsweight<<endl;<>
cout<<"age:"<<itsage<<endl;< p=""></itsage<<endl;<>
}
voidsetvalue(animal&ta,inttw)
{
ta.itsweight=tw;
ta.itsage=0;
}
voidsetvalue(animal&ta,inttw,inttn)
{
ta.itsweight=tw;
ta.itsage=tn;
}
voidmain()
{/****************found*******************/
animalpeppy
setvalue(peppy,5);
cout<<"1:"<<endl;< p=""></endl;<>
peppy.print();
setvalue(peppy,7,9);
cout<<"2:"<<endl;< p=""></endl;<>
peppy.print();}
查看答案
简答题 请编写一个函数intSeqSearch(intlist[],intstart,intn,intkey),该函数从start开始,在大小为n的数组list中查找key值,返回最先找到的key值的位置,如果没有找到则返回-1。请使用for循环实现。
注意:部分源程序已存在文件kt4_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数SeqSearch的花括号中填写若干语句。
文件kt4_2.cpp的内容如下:
#include
intSeqSearch(intlist[],intstart,intn,intkey)
{
}
voidmain()
{
intA[10];
intkey,count=0,pos;
cout<<"Enteralistof10integers:";
for(pos=0;pos<10;pos++)
{
cin>>A[pos];
}
cout<<"Enterakey:";
cin>>key;
pos=0;
while((pos=SeqSearch(A,pos,10,key))!=-1)
{
count++;
pos++;
}
cout<<key<<"occurs"<<count<<<"inthelist."<<endl;< p=""></key<<"occurs"<<count<<<"inthelist."<<endl;<>
}
查看答案
简答题 使用VC6打开考生文件夹下的工程kt4_3,此工程包含一个源程序文件kt4_3.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整。
(1)补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。请在注释“//**1**”之后添加适当的语句。
(2)完成类vector的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句。
(3)完成类vector的友元函数frienddoubleMultiply(vector&x,vector&y)的定义,先定义double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值,将请在注释“//**3**”之后添加适当的语句。输出结果如下:
(10,20)  (2,3)  80  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序如下:                      #include
classvector
{
inta;
intb;
public:
//**1**
voidinput(intx,inty)
{//**2**}
voidoutput()
{cout<<'('<<a<<','<<b<<")"<<endl;}< p=""></a<<','<<b<<")"<<endl;}<>
frienddoubleMultiply(vector&x,vector&y);
};
doubleMultiply(vector&x,vector&y)
{
//**3**
c=x.a*y.a+x.b*y.b;
returnc;
}
voidmain()
{
vectorx(10,20),y;
doubled;
y.input(2,3);
d=Multiply(x,y);
x.output();
y.output();
cout<<d<<endl;< p=""></d<<endl;<>
}
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程中包含程序文件main.epp,其中有类Door(“门”)和主函数main的定义。程序中位于每个“//ERROR****found ****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
打开503号门…门是锁着的,打不开。
打开503号门的锁…锁开了。
打开503号门…门打开了。
打开503号门…门是开着的,无须再开门。
锁上503号门…先关门...门锁上了。
注意:只修改每个“//ERROR***********found **********”下的那一行,不要改动程序中的其他内容。
#include
using namespace std;
class Door{
int Bum;//门号
bool closed;//true表示门关着
bool locked://true表示门锁着
public:
Door(int nHm){
//ERROR***********found***********
nun=this一>ann:
closed=locked=true:
}
bool isClosed()const{rehlrn closed;}
//门关着时返回true,否则返回false
bool isOpened()const{return!closed;}
//门开着时返回true,否则返回false
b001 isLocked()const{retum locked;}
//门锁着时返回true,否则返回false
bool isUnlocked()const{return!locked;}
//门未锁时返回true,否则返回false
void open(){ //开门
cout<<ENDL<<”打开”<<NNM<
//ERROR***********found***********
if(closed)
cout<<”门是开着的,无须再开门。”;
else if(10cked)
cout<<”门是锁着的,打不开。”;
else{
closed=false;
eout<<”门打开了。”;
}
}
void close(){//关门
cout<<ENDL<<”关上”<<NUM<
if(closed)
cout<<”门是关着的,无须再关门。”;
else{
closed=true;
cout<<”门关上了.";
}
}
//ERROR************found************
void lock()const{//锁门
cout<<ENDL<<”锁上”<<NUM<
if(locked)
cout<<”门是锁着的,无须再锁门。”;
else{
if(!closed){
cout<<”先关门...”;
closed=true;
}
locked=true:
cout<<”门锁上了。”;
}
}
wild unlock(){//开锁
cout<<ENDL<<”开”<<NUM<
if(!locked)
cout<<”门没有上锁,无须再开锁。”;
else{
locked=false;
cout<<”锁开了。”;
}
};
int main(){
Door door(503);
door.open();
door.unlock();
door.open();
door.open();
floor.10ck();
return 0;
}
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件 main.cpp,其中有类CPolygon(“多边形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序的正确输出结果应为: 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 #include
{tout<<——<
int area(void){return(width *height);}
class CTriangle:public CPolygon{
int length;//三角形一边长 int height;//该边上的高
public:
CTriangle(int l,int h):length(1),height(h){}
//*********found*********
int area(void){return(——)/2;}
};
int main(){
CRectangle rect(4,5); CTriangle trgl(4,5);
//*********found********* ______ *ppolyl,* ppoly2; ppolyl=&rect;
ppoly2=&trgl;
ppolyl->printarea(); ppoly2->printarea(); retun 0;
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。s0rt成员函数的功能是将当前数据表中的元素升序排列。请编写这个sort函数。程序的正确输出应为:
排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:l,2,3,4,5,6,7,8,9,10,11,12
要求:
补充编制的内容写在“//********33********”与“//********666********”两行之问。不得修
改程序的其他部分。
注意:程序最后将结果输出到文件。ut.dat中。输出函数writeToFile已经编译为。obj文件,并且在本程序
调用。
//DataList.h
#inClude using namespaCe std; Class DataList{//数据表类
int len;
double*d: publiC:
DataList(int len,double data[]=NULL);。DataList(){delete[]d;}
int length(Constt retum len;}//数据表长度(即数据元素的个数) double getElement(int i)Const{return d[i];}
void sort();//数据表排序
void show()Const;//显示数据表}.
void writeToFile(Char*,Const DataList&).//main.Cpp
#inClude”DataList.h”
DataList::DataList(int len,double data[]):len(1en){ d=new double[1en];
for(int i_0;i<LEN;I++)
d[i]=(data==NULL?0.0:data[i]);
}
void DataList::sort(){//数据表排序//********333********
//********666********}
void DataList::show()Const{//显示数据表
for(int i=0;i<LEN一1;I++)COUT<<D[I]<<”,”;&NBSP;&NBSP;&NBSP;
}
int main(){
double S[]={7,1,3,11,6,9,12,10,8,4,5,2}; DataList list(12,S);
Cout<<”排序前:”; list.show();
list.sort();
Cout<<ENDL<<”排序后:”;&NBSP;
writeToFile(””,list); return 0;
}
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,其中有枚举DOGCOLOR、狗类Dog和主函数main的定义。程序中位于每个“//ERROR ****found****”下的语句行有错误,请加以改正。改正后程序的输出结果应该是:
There is a white dog named Hoh0. There is a blaCk dog named Haha. There is a motley dog named Hihi. 注意:只修改每个//ERROR****found****女料下的那一行,不要改动程序中的其他内容。
#inClude using namespaCe std; //狗的颜色:黑、白、黄、褐、花、其他
enum DOGCOLOR{BLACK,WHITE,YELLOW,BROWN,PIEBALD,OTHER}; Class Dog{//狗类
DOGCOLOR Color; Char name[20]; statiC int Count; publiC:
Dog(Char nalTle[],DOGCOLOR Color){ strCpy(this一>name,name);
//ERROR**********found**********、
strCpy(this一>Color,Color);
} 1 DOGCOLOR getColor()Const{retum Color;}
//ERROR**********found**********
Const Char * 9etName()Const{return*finin9;} Const Char * 9etColorString()Const{
switCh(Color){
Case BLACK:return”blaCk“; Case WHITE:return”white”:
Case YELLOW:return’"yellow”: Case BROWN:return”brown”; ease PIEBALD:return”piebald”:
}
return”motley”;
}
void show()Const{ . Cout<<”There is a”<<GETCOLORSTRING()<
} }; int main(){
//ERROR**********found**********
Dog dogl(”Hoh0”,WHITE),dog2(”Haha”,BLACK);d0g3(”Hihi”,0THER); d091.show();
dos2.show(); dos3.show(); return 0;
}
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2。此工程中包含一个源程序文件main.cpp,其中有“房间”类Room及其派生出的“办公室”类0ffice的定义,还有主函数main的定义。请在程序中“//****found****”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
办公室房间号:308
办公室长度:5.6
办公室宽度:4.8
办公室面积:26.88
办公室所属部门:会计科
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“///料料found??料”。
#include
using namespaee std;
class Room{ //“房间”类
int room_n0;//房间号
double length;//房间长度(m)
double width;//房间宽度(n1)
public:
Room(int the—room—n0,double the~length,double the—width):loom—no(the—room—no),length(the—
length),width(the—width){}
int theRoomNo()eonst{return iDonl—n0;}
//返回房间号
double theLength()const{return length;}//返回房间长度
double theWidth()const{return width;}//返回房间宽度
//**********found**********
double theArea()const{_______________}//返回房间面积(矩形面积)
};
class Office:public Room{//“办公室”类
char*depart;//所属部门
public:
Office(int the_room_n0,double the_length,double the_width,eonst char木the_depart)
//**********found**********
:_______________{
depart=new char[strlen(the depart)+1];
//**********found**********
strcpy(_______________);
}
~Office(){delete[]depart;}
const char*theDepartment()const{return depart;}//返回所属部门
};
int main(){
//**********found**********
Office_______________;
cout<<”办公室房间号:”<<AU_OFFICE.THEROOMNO()<<ENDL
<<”办公室长度:”<<<endl
<<”办公室宽度:”<<<endl
<<”办公室面积:”<<<endl
<<”办公室所属部门:”<<ALL—OFFICE.THEDEPARTMENT()<
return 0;
}
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,补充编制c++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件out.dat中。文件in.dat的长度不大于1000字节。
要求:
补充编制的内容写在“//**********”与“//**********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。
注意:程序最后已将结果输出到文件0ut.dat中,输出函数writeToFile已经给出并且调用。
//proj3.cpp
#include
#include
#include
using namespace std;
class doc
{
private:
char*sir;//文本字符串首地址
int length;//文本字符个数
public:
//构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址
doc(char*filename);
void reverse();//将字符序列反转
一doc();
void writeToFile(char*filename);
};
doc::doc(char}filename)
{
ifstream myFile(filename);
int len=1001,tmp;
atr=new char[1en];
length=0;
while((trap=myFile.get())!=EOF)
{
str[1ength++]=trap;
}
str[1ength]=‘\0’;
myFile.close();
}
void doc::reverse(){
//将数组atr中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个
//字符交换……
//*************333*************
//*************666*************
}
doc::~doe()
{
delete[]str;
}
void doc::writeToFile(char*filename)
{
Ofstream outFile(filename);
outFile<
outFile.close();
}
void main()
{
doc myDoc(”in.dat”);
myDoc.reveme();
myDoc.writeToFile(”out.dat”);
}
查看答案
简答题 清使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中包含了类Pets(“宠物”) 和主函数main的定义。程序中位于每个“//ERROR****found ****”之后的一行语句有错误,请加以改 正。改正后程序的输出结果应为:
Name:sonny Type:dog
Name:John Type:dog
Name:Danny Typc:cat
Name:John Type:dog
注意:只修改每个“//ERROR ****found ****”下的那一行,不要改动程序中的其他内容。
#include
using namespace sm; enum Pets_type{d09,cat,bird,fish};
class Pets{ private:
char *name; Pets_type type; public:
Pets(const char *name=”sonny”,Pets_type type=dog);
Pets&operator=(const Pets&s);
~Pets();
void show()eonst;};
Pets::Pets(eonst char$naIne,Pets_type type)
//构造函数 {
This ->name=new char[strlen(name)+1];
strcpy(this一>name,name);
//ERROR *********found********* type=type;
}{ Pets::~Pets()//析构函数,释放name所指向的字符串
{ //ERROR *********found********* name=’/0‘;
}
Pets&Pets::0perator=(const Pets&s){
if(&s==this)//确保不要向自身赋值 return *this;
delete[]name;
name=new char[strlen(S.name)+1];//ERROR *********found*********
strcpy(this一>nmne,name); type=S.type:
return *this;}
void Pets::show()const
cout<<“Name:”<<NAME<
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.Cpp,其中有坐标点类point、线段类Line和三角形类Triangle的定义.还有main函数的定义。程序中两
Side l:9.43398 Side 2:5
Side 3:8 area:20 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#inClude #nClude using namespaCe std;
Class Point{//坐标点类 publiC:
Const double x,y;
Point(double x=0.0,double Y=0.0):x(x),Y(Y){} //**********found**********
double distanCeTo(_____) Const{
//到指定点的距离
return sqrt((x-P.X)*(x-P.x)+(Y-P.Y)*(Y-P.Y)); }
};
Class Line{//线段类 publiC:
eonst Point pl,p2;//线段的两个端点
//**********found**********
Line(Point pl,Point p2):——{}
double length()eonst/retum pl.distanCeTo(p2);}//线段的长度 };
Ct彝SS Triangle{//三角形类 publiC:
Const Point pl,p2,p3;//三角形的三个顶点 //**********found**********
Triangle(_____):pl(p1),p2(p2),p3(p3){} double lengthl()Const{//边pl,p2的长度
retum Line(pl,p2).1ength(); }
double length2()Const{//边p2,p3的长度 return Line(p2,p3).1ength();
}
double length3()Const{//边p3,pl的长度 returnLine(p3,pl).1ength();
}
double area()Const{//三角形面积
//**********found********** double s=_____;
return sqrt(s{(S-lengthl())*(s-length2())*(s—length3())); }
};
int main(){
Triangle r(Point(0.0,8.0),Point(5.0,0.0),Point(0.0,0.0)); Cout<<”Side l:”<<R.1ENGTHL()<
Cout<<”Side 2:”<<R.1ENGTH2()<<ENDL;&NBSP;&NBSP;&NBSP;
retum 0;
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList的重载运算符函数0perator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是:
两个数据表: 1,2,3,4,5,6 3,4,5,6,7,8 两个数据表之和:
4,6,8,10,12,14 要求:
补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序
的其他部分。
注意:程序最后将结果输出到文件。ut.dat中。输出函数writeToFile已经编译为。bj文件,并且在本程序中调用。
//DataList.h
#inClude using namespaCe std;
ClaSS DataList{//数据表类 intfen;
double*d; publiC:
DataList(int len,double data[]=NULL); DataList(DataList&data);
int length()Const{retum len;}
double getElement(int i)Constt return d[i];}
DataList operator+(Const DataList&list)Const;//两个数据表求和 void show()Const;//显示数据表
};
void writeToFile(Char$,Const DataList&); //main.Cpp
#inClude”DataList.h”
DataList::DataList(int len,double data[]):len(ien){ d=new double[1en];
for(int i=0;i<LEN;I++)
d㈨i=(data==NULL?0.0:data[i]);
}
DataList::DataList(DataList&data):len(data.1en){ d=new double[1en];
for(int i=0;i<LEN;I++)&NBSP;&NBSP;&NBSP;
DataList DataList::0perator+(Con8t DataList&list,)Const{//两个数据表求和 double*dd=new double[1ist.1ensth()];
//********333********
//********666********
return DataList(1ist.1ength(),dd); }
void DataList::show()Const{//显示数据表 f()r(int。i=0;i<LEN-1;I++)
eout<<D[I]<
Cout<<D[1EN-1]<
int main(){
double sl[]={1,2,3,4,5,6};
double s2[]={3,4,5,6,7,8};
DataList list1(6,sl),list2(6,s2);//定义两个数据表对象 eout<<”两个数据表:”<
listl.show(): list2.show(); eout<<ENDL<<”两个数据表之和:”<
(1istl+list2).show();
writeToFile(””,listl+list2); return 0:
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中含有一个源程碍文件 projl.epp。其中位于每个注释“//ERROR ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
ConstruCtor Called. The value is 10
Copy ConstruCtor Called. The value is 10
DestruCtor Called. DestruCtor Called. 注意:只修改注释“//ERROR ****found****”的下一行语句,不要改动程序中的其他内容。
//pwjl.Cpp
#inClude ’using namespaCe std; Class MyClass{
publiC:
//ERROR**********found**********
MyClass(int i)
{value=i;Cout<<”ConstruCtor Called.” <<ENDL;}
//ERROR**********found********** MyClass(eonst MyClass P)
{
value = P.value;
eout<<”Copy ConstruCtor Called.”<
}
void Print()
{Cout<<”The value is” <<VALUE<<ENDL;}
//ERROR**********found********* void-MyClass()
{Cout<<”DestruCtor Called.”<<ENDL;}
private:
int value;
}; int main()
{ MyChas objl
owl.Print();
MyClmss obj2(owl); obj2.Print();
retum 0;
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹pr092下的工程pros2。此工程中包含一个程序文件main.cpp,其中有“部门”类Department和“职工”类Staff的定义,还有主函数main的定义。在主函数中定义了两个“职工”对象,他们属于同一部门。程序展示,当该部门改换办公室后,这两个人的办公室也同时得到改变。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
改换办公室前:
职工号:0789姓名:张三部门:人事处办公室:521
职工号:0513姓名:李四部门:人事处办公室:521
改换办公室后:
职工号:0789姓名:张三部门:人事处办公室:311
职工号:0513姓名:李四部门:人事处办公室:311
注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include
using namespace std;
class Department{ //“部门”类
public:
Department(const char*name,const char*office){
strcpy(this一>name,nanle);
//**********found**********
}
const char*getName()const{return name;}//返回部门名称
//**********found**********
const char*getOffice()const{________} //返回办公室房号
void changeOfficeTo(const char*office){ //改换为指定房号的另一个办公室
strcpy(this一>office,office);
}
private:
char name[20];//部门名称
char office[20];//部门所在办公室房号
};
class staff{//“职工”类
public:
//**********found**********
Staff(const char*my—id,const char木my_name,Department&my_dept):——{
strcpy(this一>staff id,my_id);
strcpy(this一>name,my_name);
}
const char*getlD()const{return staff_id;}
const char*getName()consl{return name;}
Department getDepartment()const{return dept;} char staff=id[10];//职工号
char name[20];//姓名
Department&dept;//所在部门
}; void showStaff(Staff&staff){
cout<<”职工号:”<<STAFF.GETID()<
cout<<”姓名:”<<STAFF.GETNAME()<<"
cout<<”部门:”<<STAFF.GETDEPARTMENT().GETNAME()<<"
cout<<”办公室:”<<STAFF.GETDEPARTMENT().GETOFFICE()<<ENDL;&NBSP;&NBSP;&NBSP; }
int main(){
Department dept(”人事处”,”521”);
Staff Zhang(”0789”,”张三”,dept),Li(”0513”,”李四”,dept);
cout<<”改换办公室前:”<
showStaff(Zhang); showStaff(Li);
//人事处办公室由521搬到311 //**********found********** ———————————————————————一
cout<<”改换办公室后:”<
showStaff(Zhang); showStaff(Li);
return 0; }
查看答案
简答题 请使用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;
}
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹progl下的工程progl,该工程中包含程序文件main. cpp,其中有Salary(“工资”)类和主函数main的定义。程序中位于每个“//ERROR ****found****”之后的一行语句行有错误,请加以改正。改正后程序的输出结果应为:
应发合计:3500应扣合计:67.5实发工资:3432.5
注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。
#include
using namespace std; class Salary{
public:
Salary(const char *id,double the_base,double the bonus,double the_tax) //ERROR **********found**********
:the_base(base),the_bonus(bonus),the_tax(tax) {
staff_id=new char[strlen(id)+1]; strcpy(staff_id,id);
}
//ERROR **********found********** ~Salary(){delete * staff_id;}
double getGmssPay()const{retum base+bonus;}//返回应发项合计
double getNetPay()const}retum getGmssPay()-tax;}//返回实发工资额 private:
char * staff id;//职工号 double base;//基本工资 double bonus;//奖金
double tax;//代扣个人所得税 };
int main(){
Salary pay(”888888”,3000.0,500.0,67.50);
cout<<”应发合计:”<<PAY.GETGROSSPAY()<<"
cout<<”应扣合计:”<<PAY.GETGROSSPAY()一PAY.GETNETPAY()<<””;
//ERROR**********found**********
cout<<”实发工资:”<<PAY::GETNETPAY()<<ENDL;
return 0;
}
查看答案
简答题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp,其中定义了Stack类和ArrayStack类。
Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示:
公有成员函数 功能
push 入栈:在栈顶位置添加一个元素
pop 退栈:取出并返回栈顶元素
ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。
请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:
a,b,C
C,b,a
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****料found****”。
//proj2.cpp
#include
using namespacc std;
class Stack{
public:
virtual void push(char C)=0;
virtual char pop()=0;
};
class ArrayStack:public Stack{
char*P;
int maxSizc;
int top;
public:
ArravStack(int s)
{
top=0;
maxSize=s:
//*********found*********
P=______;
}
~ArrayStack()
{
//*********found*********
_______;
}
void push(char c)
}
if(top==maxSize){
cerr<<”Overflow! \n”:
return;
}
//*********found*********
_______;
top++:
}
char pop()
{
if(top==0){
cerr<<”Underflow!、n”;
return‘\0’;
}
Top--;
//*********found*********
______;
}
};
void f(Stack&sRef)
{
char ch[]={‘a’,‘b’,‘c’};
cout<<CH[0]<<”,”<<CH[1]<<”,”<<CH[2]<
sRef.push(oh[0]);sRef.push(ch[1]);sRef.push(ch[2]);
cout<<SREF.POP()<
cout<<SREF.POP()<
cout<<SREF.POP()<
}
int main()
{
ArrayStack as(10);
f(as):
return 0:
}
查看答案