简答题 | 使用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: } |
查看答案 |