2011全国计算机等级考试二级C++机试题

2011全国计算机等级考试二级C++机试题

ID:82949031

大小:184.54 KB

页数:131页

时间:2023-09-25

上传者:灯火阑珊2019
2011全国计算机等级考试二级C++机试题_第1页
2011全国计算机等级考试二级C++机试题_第2页
2011全国计算机等级考试二级C++机试题_第3页
2011全国计算机等级考试二级C++机试题_第4页
2011全国计算机等级考试二级C++机试题_第5页
2011全国计算机等级考试二级C++机试题_第6页
2011全国计算机等级考试二级C++机试题_第7页
2011全国计算机等级考试二级C++机试题_第8页
2011全国计算机等级考试二级C++机试题_第9页
2011全国计算机等级考试二级C++机试题_第10页
资源描述:

《2011全国计算机等级考试二级C++机试题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

请编写函数fun()»其功能是计算并输出下列多项式值Sn=l+l/l!+l/2!+l/3!+l/4!+...+l/n!例如:从键盘输入15,则输出为32.718282。注意:部分源程序以存在文件ktl7_2.cpp中。诂勿改动主函数main和其他函数中的内容,仅在函数fun的花括号中填入所编写的若干语句。文件kt17_2.cpp的内容如下:#include#includedoublefun(intn)voidmain(){intn;doubles;cout«"Inputn:"«endl:cin»n;s=fun(n);cout<

1【参考答案】doublefun(intn){doublet,sn=1.0;inti,j;for(i=l;i<=n;i++){t=LO;for(j=l;j<=i;j++)t*=j;sn+=l.O/t;}returnsn;}【试题解析】本题解法是通过观察所给的多项式,可以找出该多项式相应的数学规律。本题中,多项式是一个累加求和的多项式,并且每ー项总是比前ー项多乘ー个整数,所乘整数恰好等于每一项的编号,这样利用循环语句进行阶乘、累加就可以实现功能。由于函数中出现了"/”的运算,所以最终的函数值要考虑到用double类型。三、综合应用题使用VC6打开考生文件夹下的工程ktl7-3。此工程包含ー个ktl7一3.cpp,其中定义了类しetter和Number以及Grid,其中Grid类由Letter类和Number类public派生,但ヨ个类的定义并不完整。请按要求完成ド列操作,将程序补充完整。

2(1)添加类Letter的带・个参数c的构造函数,c是char型的数据,默认值为"A”,该函数把参数c的值赋给类的保护成员ch,请在注释‘ソ/**1**”之后添加适当的语句。(2)添加类Number的带・个参数n的构造函数,n是int型的数据,默认值为0,该函数把参数n的值赋给类的保护成员num,请在注释ッ/**2**”之后添加适当的语句。(3)添加派生类Grid构造函数的定义,传入的参数为char型的c和int型的n,并将其分别赋值给基类的ch和num,请在注释ッ/**3**”之后添加适当的语句。(4)完成派生类Grid的友元函数-"(ぐ运算符重载的定义,使其以格式“]g.ch.g.num]”输出,请在注释ツ/**4**”之后添加适当的语句.源程序文件kU7.3.cpp清单如下:#includeclassLettcr{protected:charch;public:〃**]**J•classNumbcr{protected:intnum;

3public:};classGrid:publicLcttcr,publicNumbcr{public:friendostream&opcrator«(ostream&o.Grid&g););(o<ぐT'vvg.ch

4【试题解析】モ要考查对类和派生类的构造函数的定义,以及重载为友元的运算符函数的定义的掌握,其中(3)使用了参数列表进行变量赋值,这是派生类构造函数屮经常使用的,(4)对于友元函数在类体外的定义不需要使用作用域符,而ostream类的对象引用可直接使用原来意义的符号“〈ぐ’进行输出。使用VC6打开考生文件夹下的工程"17」,此工程包含一个源程序文件k"7」.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:0149162536496481源程序文件kt17_l.cpp清单如下:#includetemplateclassVector{Tvec[N];public:voidset(intpos,Tval);Tget(intpos);/*****************found*****************/templatevoidVector::set(intpos,Tval){vec[pos]=val;)

5/*****************found*****************/tcmplatcVector::get(intpos)(returnvec[pos];}intmain()(Vectorv;inti=O;doubled=0.0;for(i=0;i<10;i++)v.set(i,double(i*i));for(i=0;i<10;i++)cout«v.get(i)«,,M;cout«endl;【参考答案】(1)在“ド后添加分号。(2)将templateVector::get(intpos)改为:templateTVector::get(intpos)(3)将缺少返回值改为:加入return0;

6【试题解析】(1)主要考查对于类定义的理解,即使使用了类模板,在类定义的结尾仍然需要使用分号,这是C++的规定;(2)主要考査是模板类的定义,template是关键字,在〇中间是类型的定义,题目中Vector是ー个类的名称,前面应该有该模板的名称,即T,这样オ是完整的定义;(3)主要考査对函数返回值的掌握,任何返回值类型不为int型的函数最后都必须使用returen语句返回对应类型的值,就算是main函数也不例外。机试试题ー:1.递归求斐波那契数列:#includeconstintN=8;longFibo(intn);voidmain()(longf=Fibo(N);cout«f«endl;}longFibo(intn)(if(n==l)return1;if(n==2)return1;returnFibo(n-1)+Fibo(n-2);I注意:递归时用return返回,而不是用表达式1.综合应用:#includeconstdoublepi=3.1416;classcircle(protected:doubler;doublearea;public:circle。{r=0;}

7circle(doubleradius))r=radius;}voidprint。(area=r*r*pi;cout«',r="«r«n,'«uarea=,,«area«endl;));classcolumn:protectedcircle(protected:doubleh;public:column(doubleradius,doubleheight):circle(radius)注意如何赋值给基类(h=height;)voidprint。(circle::print();调用基类成员函数cout«nh='"«h«"vol=M«h*area«endl;));voidmain。{columncol(1.0,2.0);col.print。;)机试四:#include#includechar*append(char*sl,char*s2)(char*apt;intlength=strlen(sl)+strlen(s2);apt=newchar[length+l];strcpy(apt,sl);strcat(apt,s2);returnapt;)voidmain()(charts,*sl,*s2;sl=nthisis”;s2="astring.";s=append(sl,s2);cout«s«endl;)#includeclassT(public:T(intx):a(x)(b+=x;)

8staticvoiddisplay(Tc)(cout«"a="«c.a«"b="«c.b«endl;)private:constinta;staticintb;);intT::b=5;voidmain()(TA(3),B(5);T::display(A);T::display(B);}机试六:#includeclasscsampleinti;public:csample(){cout«nconstructorln«endl;i=O;}csample(intval){cout«',constructor2,,«endl;i=val;}-csample(){cout«"Destructoru«endl;}voiddisp(););voidcsample::disp()注意(cout«Hi="«i«endl;)voidmain()(csample*a,b(10);a=newcsample;注思a->disp();b.dispO;}机试七intchamum(charfn[10])(fstreamfile;file.open(fn,ios::in);if(ifile)(cout«°cannotopenfile!*';abort();)charch;intcount=0;while(!infile.eof())(

9infile.get(ch);count++;)infile.close();returncount-1;)算法:两数之积除以最大公约数所得的值即为最小公倍数gcd(intm,intn)intt,r;if(m#include#includevoidfun(chars[],charc)(inti=0;intj,t;while(s[i]!='\0')i++;for(j=0;j

10(if(sU]==c)(for(t=j;tintpattern_index(charsubstr[],charstr[])(inti,j,k;for(i=0;str[i];i++)for(j=i,k=0;(str[j]==substr[k])||(substr[k]==,?');j++,k++)if(!substr[k+1])returni;return0;)voidmain()(char*substring,*string;intsame;substringゴ???gram”;string="thisprogramreturnindexofsubstring";same=pattern_index(substring,string);if(same)coutvv"字串起始位置「vvsamevvendl;elsecoutvv”匹百己不成功"vvendl;)机试21char*change(charinstr[]);#include"iostream.h"

11voidmain()(charinstr[50];char*outstr;cout«"inputastring:"«endl;cin»instr;outstr=change(instr);cout«"overgradedstring:M«endl;cout«outstr«endl;char*change(charinstr[])inti=0;intj;while(instr[i]!='\O')i++;for(j=0;j='a'&&instr[j]<=,z')(instr[j]=instr[j]+'A'-'a';})for(j=0;j#include#include#includevoidfun(char*s,intnum)(inti,j;for(i=1;ii;j-)(if(*(s+j-1)<*(s+j)){chartmp;tmp=*(s+j-1);*(s+j-1)=*(s+j);*(s+j)=tmp;)

12))}voidmain()(chars[1O];printf("输入7个字符的字符串:");gets(s);fun(s,7);cout«s;•defaultconstructor:默认构造函数:预设建构函式:缺省构造函数•defaultcopyconstructor:缺省复制构造函数specifiern.说明符:指示语:区分符■C:\ProgramFiles\MicrosoftVisualStudio\MyProjects\057\057.cpp(14):errorC2758:'c':mustbeinitializedinconstructorbase/memberinitializerlist,BO:c(a)T:undeclaredidentifier'pair1:useofclasstemplaterequirestemplateargumentli缺少模板声明:template机试27#include#include#include#includevoidfun(char*s,chart[])(intk=0;intj;inti=strlen(s);for(j=0;j

13pleaseinputstringS:ABCDEFG12345135或您盛曆烫轡烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫菌BCDEFG12345Pressanykeytocontinue机试28:#includeclassA(public:staticintn;不得初始化A(){n++;};〜A(){n..;};};intA::n=0;类外初始化静态成员intmain()(Aa;Ab[3];A*c=newA;c=&a;cout«c->n«endl;cout«A::n«endl;return0;}机试30#includevoidprevnext(int,int&,int&);intmain()(intx=10,y,z;prevnext(x,y,z);cout«"previous=H«y«",Next="«z«endl;return0;}voidprevnext(intx,int&prev,int&next)(prev=x-1;很难next=++x;)机试31:#includeintfun(intscore[][3],intnum)intk=0;

14intt=0;intm=0;for(inti=O;i=70)(k++;if(score[i][j]>=85)t++;})jf(k==3&&t>=1)m++;k=0;必须重新赋值,否则出错。t=0;)returnm;)voidmain(){intscore[4][3]={{70,89,92},{70,76,93},{80,86,98},{65,73,45}};cout«fun(score,4)«endl;)机试32:#includeintfun(char*num)(intsum=0;intm;for(inti=0;i<8;i++)(if(*(num+i)==T)必须注意m=1;elsem=0;for(intj=7;j>i;j-)m=m*2;sum=sum+m;}returnsum;voidmain()

15charnum[8],ch;cout«"Enteran8bitbinarynumber:";for(inti=0;i<8;i++)(cin»ch;num[i]=ch;)cout«fun(num)«endl;)机试34#include#includeclassperson(public:charname[20];unsignedlongid;floatsalary;voidprint(){cout«name«,'«id«''«salary«endl;}};voidmain()(personp;person*ptr;ptr=&p;strcpy(ptr->name,"David");注意次序ptr->id=3123;ptr->salary=1000;ptr->print();)机试35:#include#includevoiddisplay(){charstr[1OO],ch;inti=0;while((ch=getche())!=W)(str[i]=ch;i++;)str[i]='\O';cout«endl«str«endl;voidmain()(cout«"pleaseinputastring:H«endl;

16displayO;)机试36:#includeclassamount;classcoins(enumunits{penny,nickle,dime,quarter,half_dollar};friendclassamount;};classamount(coins::unitsmoney;public:voidsetm();intgetm();};voidamount::setm(){money=coins::dime;)intamount::getm()(returnmoney;)intmain(){amountob;ob.setm();cout«ob.getm()«endl;return0;)机试38:#include#include#includedoublefun(doublex)doublesum=1.0;doublei=1;doublet=0.5;doublem=1.0;while(fabs(m)>=0.000001)(m=m*(t-i+1)*x/i;非m=m*(m-i+1)*x/i;

17i++;sum=sum+m;)returnsum;)voidmain()(doublex,s;cout«Mlnputx:"«endl;cin»x;s=fun(x);cout«"s="«s«endl;}机试39:#include#includevoidfun(int(*s)[10],int*b,int*n,intmm.intnn){for(inti=0;i

18M;for(i=0;i<3;i++)(for(j=0;j<4;j++)cout«w[i]g];cout«endl;fun(w,a,&n,3,4);cout«"TheAarray:

19";for(i=0;i

20

21";)Switch语句每个case块必须有break

22机试41:#includeintcomm(intn.intk)(if(k>n)return0;elseif(n==k||k==0)return1;elsereturncomm(n-1,k)+comm(n-1,k-1);}voidmain()(intn=7,k=3;cout«"n=7,k=3M«endl;cout«comm(n,k)«endl;)机试44:#includevoidsort(inta[],intn)(for(inti=0;i=i;j—)等号不能少(if(a[j]>aU+1])(inttemp;temp=a[j];aU]=aU+1];a[j+1]=temp;}})}voidmain()inta[]={3,8,6,4,2);cout«"Beforesort:"«endl;for(inti=0;i<5;i++)cout«a[i]«n”;cout«endl;sort(a,5);cout«MAftersort:N«endl;for(i=0;i<5;i++)

23cout«a[i]«w”;cout«endl;)改错:#include/**********found***********/intfun(int*x,inty){intt;/**********found***********/t=*x;*x=y;4)在函数内可以发现语句t=x;把地址值赋给了整型变量,这是不允许的,按题义应当把指针x所指a的值赋给t,因此语句应该是t=*x;同样语句x=y;应该改成・x=y;,这样就把主函数中变量b的值赋给了变量a;改变后再运行程序并给a和b分别输入10和20,观察输出结果可以看到a和b的值都为20,也就是说b的值已给了a,而b本身不变。/**********f0un,********黄**/returnt;5)再审查程序应当看到在主函数中,b最后的值是通过fun函数的返回值赋给的,观察函数的return语句,返回的是函数中y的值,而这是主函数屮b的原值,因此在逻辑上存在错误,按题义应该返回a的原值,而此时,a的原值已通过t=*x放在了fun函数的t中,所以return语句应改成:retumt;。再次运行程序,就的到了正确的结果.}voidmain(){inta,b;printf("Entera,b:H);scanf("%d%dM,&a,&b);printf(Ma=%db=%d

24

25“,a,b);b=fun(&a,b);printf(Ma=%db=%d

26

27",a,b);}选择排序:••・・M••for(intIeO|i

28'

29k,*nkp,wuyou,wy);printf("%d%d%d%d

30M,nk,*nkp,wuyou,wy);}

31看到结果了么?是不是很吃惊啊?-9-969247大家看到了,南开的结果是负数,连原来的变量nk都变成了负数,这显然错了。无忧的聪明一点,知道int比char大,定义了个int,对了。南开错误原因就是在TC2.0中char型变量只有一个字节,根本容纳不下,E"11,所以产生了溢出,上次考这道题目没过的同学是不是有所启发呢?这里给出考试中心命题组的答案:voidencryptChar(){inti,k,ch;for(i=0;ifor(k=0;kch=xx[i][k];ch=(ch*11)%6;if(!(ch<=32||ch>=130))xx[i][k]=ch;))似乎•个例子不能说明什么,那就把上面的数字题目的答案给大家看看:已知在文件in.dat中存有N个实数,(N<200),函数readdat。是读取这N个实数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这N个实数的整数部分平均值aver;2、分别求出这N个实数中其整数部分值小于平均值ever的数的整数部分值之和sumint与小数部分之和sumdec最后调用函数WriteDat。把所求的结果输出到文件。UT8.dat中。这ー题看起来很眼熟,然而你仔细看!1、aver是整数部分的平均值!不是普通的哦!2、整数部分值小于平均值ever的数的整数部分值之和sumint与小数部分之和sumdec!原来这么复杂!稍不留心就错了,结果就想当然的。分考试中心命题组23题答案:inti;longval;floatdec;for(i=0;ival=(long)xx[i];aver+=xx[i]-val;)aver/=(double)N;for(i=0;ival=(long)xx[i];dec=xx[i]-val;if(dec>aver){sumint+=val;sumdec+=(xx[i]-val);))看到了吧,首先,val的定义,不是我们习惯的int,而是能容纳更大数的long,第三条:不要使用快捷键!很多人在使用TC的时候习惯「用F9,CTRL+F9或者其他的热键,首先F9只是编译了,并没有运

32行程序,考试一定要运行ード你的程序オ会有输出文件,否则一定是。分。热键在考试的时候是很危险的,因为UCDOS的热键和TC的冲突,CTRL+F9变成了全角半角转换,如果不小心按了,会导致你的程序有中文字符,编译的时候出错,而且很难杏找排除错误!所以建议大家在考试的时候使用ALT+红色字母来调出菜单进行编译调试等步骤,建议步骤为:写完代码后用ALT+F,S存盘,然后ALT+C,M编译,然后ALT+R,R运行,这样就万无一失了.第四条:不耍加载任何输入法上机考试用的DOS环境内存十分有限,如果你加载了任何ー个输入法,都有可能造成编译程序的时候出现outofmemory内存不足的情况,到那时就麻烦了。程序只要写的对就可以,不要画蛇添足的加注释,没有人看的!第五条:不要提前交卷!考场一般使用NOVELL网络,有的时候存在网络状况不好而连接失败等问题。这时,如果你已经提前交卷的话就不太好了。另外也可以防止别人有意无意的改动你的程序。«(2)对字符串的操作该类问题是每次考试的重点和难点,特别是将字符串同指针结合起来以后,难度就更大了。考生在解决此类问题是应特别注意字符串的结束标志’'0;它不仅仅用来作为字符串的结束标志,而且在对字符串进行操作的时候,它也是循环的结束标志。3.分块实施:9:第9题编写ー个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。m与n为两个正整数,且要求m>n。p=m!/n!(m-n)!答案:floatfun(intm,intn)(floatp,t=l.0;intI;for(i=l;i<=m;i++)t=t*I;p=t;for(t=1.0,i=l;i<=n;i++)t=t*I;p=p/t;for(t=1.0,i=1;i<=m-n;i++)t=t*I;p=p/t;returnp;)点评:p计算总的结果,t计算分步结果第4题请编写ー个函数voidfun(char*ttuntpp[]),统计在H字符中“"到“z"26各字母各白出现的次数,并依次放在pp所指的数组中。答案:voidfun(char*tt,intpp[])(inti;for(i=0;i<26;i++)

33PP[i]=O;while(*tt){switch(*tt){case'a':pp[0]++;break;case'b':pp[l]++;break;case'c':pp[2]++;break;case*d*:pp[3]++;break;case,e':pp[4]++;break;casef:pp[5]++;break;case'g':pp[6]++;break;case%':pp[7]-H-;break;casei:pp[8]++;break;case'j':pp[9]++;break;case'k':pp[10]++;break;caseT:pp[ll]++;break;case'm':pp[12]++;break;case'n':pp[12]++;break;case’〇’:pp[14]++;break;case'p':pp[15]++;break;16:第16题请编写ー个函数floatfun(doubleh),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。答案:floatfun(floath)longt;floats;h二№1000;保留两位t=(h+5)/10J四舍五入s=(float)t/100.0;returns;)若最高分不止ー个:for(i=0;i

34}36:第36题假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:将字符串中的前导・号全部移到字符串的尾部。答案:voidfun(char*a)(inti=0,n=0;char*p;p=a;while(*p=='*'){n++;P++;Ip所指向元素推向非‘*‘处‘n为‘的个数while(*p){a|i]=*p;i++;P++;}指针指向末尾while(n!=0)(a[i]=+;i++;n-;}末尾后补a[i]=AO\41:第41题请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到ー个字符串中。答案:voidfun(char(*s)|n|.char*b){inti,j.k=O;for(j=();jinti=100;classMyClass

35(public:MyClass(inti)(cout«"member:"«i«endl;/*******サ〇und********/MyClass::i=i+9;)voidPrint()const(cout«',member:M«i«endl;)private:inti;};voidmain()(ハ…*…found"/MyClassobj(1);inti(0);obj.Print();/********found********Icout«"member:"«::i«endl;return;MyClass::i=i+9;cout«"member:M«::i«endl;本题考查了考生对变量作用域的了解情况•/(1)1=1丹,语句使彩参喲值自増9,这样做是亳无意义的,因为形参变量值在函数结束后不会被保存・所以,等号左边的变量吸引用为MyClass的私有成员变量一将私有成员i初始化为形参四的值.可以通过t応指针来引用,也可以通过域作用符(2)MyClassobj,语句会产生一条编看,这个构造参数应该为1.(3)coutvv"3加:"《ivvendl,语句输出了mam()函数中定义的局部变量由内容,该变量被初始化为〇,但这条语句已经是mam()中的最后一条输出语句了,对应着第3行结果,应该输出100オ对,所以该处引用的应该是该文档中第2行定义的全局变量1.此时引用全局变量泌须通过域作用符.includeintmain(){/********1—・]ハイ********/cout«Mpleaseinputastring:M«endl;/***4r****fc.[nd********/namespacestd;charstr[256];cin.getline(str,256);cout«strlen(str)«endl;return0;

36本题考查了考生对名字空间的了解情况•(1)因为程序使用的头文件是〈iostream〉,没有诟變,该头文件中定义的所有标识符都位于C卄株准库名字空间«stdM内・所以,语句cout«"pleaseinputastring:"<〃注意只能使用int类型,不能类型转换intfun(char*strl,char*str2)(inti=O,j=O;intk,t;intm,n=O;intp;while(str1[i]!='\O,)i++;while(str2[j]!=,\0,)j++;for(k=0;k

37}voidmain(){charstr1[1024];charstr2[256];cout«Mpleaseinputastring:M«endl;cin.getline(str1,1024);cout«Mpleaseinputotherstring:M«endl;cin.getline(str2,256);cout«fun(str1,str2);cout«endl;return;)使用VC6打开源程序文件advacpp•其中类MyClass用于把文件输出到屏幕,然后进行文件的分割.分割的方法如下,第一个文件的大小是文件的前一半,另ター个文件的大小是剩余部分,此程序将!n.txt文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件outl.txt和out2.txt中・其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环.请在注释//********广**后添加适当的语句.(2)把获得的输入文件的内容存储到buf中,并且用len记录下文件的长度.请在注释〃********2********后添加话ス的丄句(3)将输入文件的后一半内容存储在第二个文件中,淸在注释仍*******3********后添加适当的语句.(4)使用文件流对象打开输入文件!ntxt,请在注経〃********4********后添加适当的语句.注意:增加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#include#include#includeclassMyClasspublic:MyClass(char*fileName)len=0;fstreaminfile;infile.open(fileName,ios::in);charch;〃********〔********while(!infile.eof())cout«ch;*******buf[len]=ch;len++;}infile.close();)voidsplit()

38fstreamoutfilel;fstreamoutfile2;outfilel.open(Mout1.txt",ios::out);outfile2.open("out2.txt",ios::out);inti=0;for(i=0;ic,则新的杳栈区间的下界不变,卜界改カk.l:否则新的查找区间的下界改为k+1,上界不变•在新区间内继续用二分法查找・注意:不能修改函数的其他部分・

39#includeintsearch(char*s,charc)(intlow=0;inthigh;//1计算s的长度for(high=0;s[high]l=0;high++);intk;while(lowc)high=k-1;符合要求elselow=k+1;)if(s[low]==c)returnlow;return-1;)voidmain()(chars[]={'a',b,'c','d','f','g','h','i',0,'p','r',V,〇};charc;coutvv”请输入ー个字符:"vvendl;cin»c;coutvv”输入数字的位置是:"«search(s,c)«endl;return;)法二:intsearch(char*s,charc)inti=0;while(s[i]!='\O')i++;inthigh,low,mid;for(high=i-1,low=0;high>=low;)mid=(high+low)/2;if(s[mid]>c){high=high-1;)elseif(s[mid]

40}returnmid;使用VC6打开考生文件夹下的源程序文件advacpp,阅读下列程序说明和代码,功能如下:从屏幕输入数字,然后由大到小插入到指定的概中.当输入。时,表示输出的数据已经输入完成,然后把数据打印到屛幕,然后释放内存.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)在父节点的Next中保存新植入的节点的指针,淸在注释伊*******1********•<后添加适当的语句.(2)把pNex!的子节点赋给pNext本身,淸在注释伊*******2********后添加适当的语句.(3)判定p的子节点不为空,如果不为空,则打印p其中的数据到屏幕,请在注释仍*******3********后添加适当的语句.(4)用tempi保存动态申请内存节点的概表头,请在详释俨*******4********后添加适当的语句.注意:增加代码,或者修改代码的位置已经用符号表示出来.淸不要修改其他的程序代码.#includeclassMyDatapublic:MyData(intdata=O)this->data=data;this->next=NULL;);

41intdata;MyData*next;};voidlnsert(MyData*p,intdata)进行定义为新插入指针父节点为pParent,子节点pNext(MyData*temp=newMyData(data);MyData*pParent=p;MyData*pNext=p->next;while(pNext)(if(data>pNext->data)(〃********〔********pParent->next=temp;temp->next=pNext;return;)else(pParent=pNext;〃ー******ウ********pNext=pNext->next;}}if(pNext==NULL)(pParent->next=temp;return;)}voidprintf(MyData*p)(〃……**3…*…*while(p->next!=NULL)(cout«p->next->data«"M;p=p->next;}cout«endl;)voidDelete(MyData*p)(〃…*****4…*…*MyData*tempi=p->next;MyData*temp2;while(temp1!=NULL)(temp2=tempi->next;

42deletetempi;tempi=temp2;))voidmain()(inti=0;MyDatahead;do(intdata;coutvv"请输入ー个数字:“<voidfun(char*s,char*t)(inti=0;intp=0;intk=0;intj;while(*(s+i)!='\0f)i++;forO=0;j

43#include#include#includeusingnamespacestd;voidWriteFile(char*str)(ofstreamout1;out1.open("out.txt",ios_base::binary|ios_base::app);for(inti=0;str[i]!=0;i++)out1.put(str[i]);out1.close();)voidfun(intx)(charstr[32];inti;for(i=30;i>=0;i-)(if(x%2)str[i]=T;elsestr[i]='O';x»=1;x后移一位if(lx)break;)str[31]=へ。’;cout«&str[i]«endl;引用WriteFile(&str[i]);引用voidClearFile()ofstreamout1;outl.openC'out.txt");out1.close();intmain()ClearFile();fun(13);return0;25)下列关于类模板的模板参数的叙述中,错误的是rA)模板参数可以作为数据成员的类型0B)模板参数可以作为成员函数的返回类型rC)模板参数可以作为成员函数的参数类型D)模板参数不能作为成员函数的局部变量的类型本题的正确答案应该是:D20)语句int*p=&k,定义了指针p,与这个语句等效的语句序列是「A)int*p;p=&k;「B)int*p,p=k;〇C)int*p,*p=&k,[D)int*p;*p=k;

44本题的正确答案应该是:A10)下列叙述中正确的是[A)为了建立一个关系,首先要构造数据的逻辑关系◎B)表示关系的二维表中各元组的每ー个分量还可以分成若干数据项r〇ー个关系的属性名表称为关系模式rD)ー个关系可以包括多个二维表本题的正确答案应该是:C35)有如下程序:#includeusingnamespacestd;classB(public:virtualvoidshowO{coutくく"B”;});classD:publicB{public:voidshowO{cout«"D",}上,voidfunl(B*ptr)(ptr->show();}voidfun2(B匠ef)fref.showO;}voidfun3(Bb){b.showO;}intmainO{Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);return0;程卜的输出结果是rA)BBBB)BBDrc)DBBeD)DBD太质gTF福答室应该星••C32)有如下程序:#includeusingnamespacestd,classBase(public:voidoutput0{cout«l;}virtualvoidPrint(){coutくく'B';));classDerived:publicBase(public:voidoutput0{cout«2.}voidPrint0{cout«'D;});.introainO{Base*ptr=newDerived;ptr->output();ptr->Print();deleteptr;return0;程卜的输出结果是佇A)1BCB)ID「C)2BrD)2D本题的正确答案应该是:B#include#include#includeusingnamespacestd;voidWriteFile(char*str)(streaminfile;fstreamoutfile;infile.open(Mout.txt",ios_base::binary|ios_base::app);outfile«str;infile.close();不可缺少outfile.close();

45voidfun(char*str)(inti=0;while(str[i]!='\0')i++;for(intj=O;j=(A,&&str[j]<='Z')str[j]=strO]+'a,-,A,;if(strO]>='a'&&strO]<='z')str[j]=strO]+'A,-'a';WriteFile(str);voidClearFile()ofstreamout1;out1.open("out.txtM);out1.close();)intmain()(ClearFile();charstr[1024];cout«"pleaseinputastring:"«endl;cin.getline(str,1024);fun(str);return0;使用VC6打开考生文件夹下的源程序文件advacpp,程序通过继承关系,实现对姓名的控制・类NameCtrl实现对名字访问的接口,AmmalName实现对动物名字的设置和输出・程序输出为:AnimalNameDog其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)在类NameCtrl中定义接口函数GetName,为纯虚函数.请在注释俨*******1********后添加适当的语句.(2)函数GetName20实现获得动物名字的緩存,但是只获得读允许操作这个缓存,语在注喜伊*******2********后添加适当的语句.(3)实现AiumalName的构造函数,请在注喜俨*******3********后添加适当的语句.(4)完成AirnnalName的构造函数,实现对名字的处理.谙在注释伊*******4*******1•・后添加适当的语句・注意:增加代码,或者修改代码的位置已经用符号表示出来•淸不要修改其他的程序代码.#includeclassNameCtrlpublic:〃********[********

46virtualvoidGetName()=0;};classAnimalName:publicNameCtrlpublic:

47voidGetName()cout«"AnimalName"«endl;)〃********2********何时用const只读constchar*GetName2(){returnm_str;)〃********Q********AnimalName(char*str){inti;for(i=0;str[i]!=0;i++)m_str[i]=str[i];yy********4********m_str[i]=0;)使数组结束private:charm_str[32];};voidmain()(NameCtrl*p;AnimalNameobj1("DogH);p=&obj1;p->GetName();cout«obj1.GetName2()«endl;return;)应跟的参数类型为constint或int.(3)catch语句后面参数不能为空,如果需捕获所有类型的异富,则应使用作カ卷数.catch(…)cout«"ERROR"«endl;使用VC6打开考生文件夹下的源程序文件advacpp.类Perso続成对人的姓名和年龄的绑定.函数fuM)获得年龄比较大的姓名•然后输出其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)完成类的构造函数,请在注释“********]*******・后添加透当的语句.(2)完成构造函数对妗名的赋值,请在洋样炉平冲率率率率2和平・學・琳平后あ加适当的语句.(3)定义类的发元函数fun(),请在注释"********3********后添加适当的语句.(4)补充函数fun()的年龄比較,淸在注释力********4********后添加汚当的语句.注意:増加代码,或者修改代码而位置已经用符号表示出来.请不要修改其他的程序代码・

48#includeclassPerson(public:〃********〔********Person(char*strUserrName,intnOld)(inti;for(i=0;strUserrName[i]!=0;i++)(m_UserName[i]=strUserrName[i];)[ド…*…2a出错.应为点2处:应添力口m_UserName[i]=0;注意初始化m_Old=nOld;)private:charm_UserName[32];intm_Old;〃……**3********friendvoidfun(char*str,Person&personl,Person&person2);};voidfun(char*str,Person&personl,Person&person2){ロ********4m**if(person1.m_Old>person2.m_Old)for(inti=0;personl.m_UserName[i]!=0;i++)st巾]=personl,m_UserName[i];str[i+1]=0;})else(for(inti=0;person2.m_UserName[i]!=0;i++){str[i]=person2.m_UserName[i];str[i+1]=0;}))voidmain(){charstr[32];Personp1(Mabc",20);

49Personp2("def",30);fun(str,p1,p2);cout«str«endl;return;使用VC6打开考生文件夹下的源程序文件advacpp.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)对文件以追加的方式打开文件•话在注释肥*******1********后添加适当的语句.(2)定义nun为类Sample的公有mt型数据成员;请在注释伊*******2*******11•后添加适当的语句.(3)审ッn为举Samnle的對根或帚謔+,#指向类Sample数据成员m,淸在注释伊*******3*******ス后添加适当的语句.(4)定义p指向类Sample数据成员n,请在注释俨*******4********后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来。语不要修改其他的程序代码。#include#include#include#includeusingnamespacestd;voidWriteFile(intx)ofstreamout1;〃********イ********out1.open("out3.txt",ios_base::app);0Ut1«X«'out1.close();)voidClearFile()(ofstreamout1;out1.open("out3.txtH);out1.close();)classSample(public:voiddisp()(cout«Mm=M«m«endl;WriteFile(m);cout«Mn="«n«endl;WriteFile(n);)〃*m*2********intm,n;};

50voidmain()(〃ー……3……**intSample::*p=&(Sample::m);ClearFile();Samplea;a.*p=30;I/********4********p=&(Sample::n);a.*p=45;a.disp();)二维数组指针:a[3][6]*ptrptr=&a[〇]⑼;"(*a+i)==*(ptr+i)使用VC6打开考生文件夹下的源程序文件・modi.cpp,该程序运行时有错误,谙改正错误,使得程序正常运行.并使程序输出结果为:abcdefghabcdefghabcdefgh注意:错误的语句在J********fbund********就下面,修改该语句即可,g

51#includevoidmain()********found********/charstr1[]="abcdM"efghw;/********found********/charstr2[]=Habcd\efghN;/********found********/charstr3[]="abcdM"efgh";cout«str1«endl;cout«str2«endl;cout«str3«endl;return;)本题考查了考生对字符串连接和续行的了解,情况•C++字符串的连接不须使用任何运算符,直接把引号引起来的字符串放到ー起就可以了・所以第1、3处都应改为“="abcd"”•如果字符串太长一行放不了,可以使用步行符“ド,下一行的字符串必须顶格,否则空格或Tab符会被当作字符串的一部分•所以第2处应改为“="abcd改错,输出〇K#includevoidmain()(/********found********/typedefboolBOOL;类型应放在变量之前/********'〇und********/BOOLa=FALSE;标识符区分大小写int1=0X80000000;ハ*******found***/a=!i;右边应是表达式,注意优先级if(a){cout«"OKH«endl;)return;第1处:typedefBOOLbool,应改为typedefboolBOOL;第2处:BOOLa=FALSE,应改为BOOLa=false,第3处:a=!i,应改为a=(i!=0);综合应用2,4有误使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,完成空出部分程序•该程序从建盘读入整数,并按从大到小的顺序输出输入整数中互不相等的那些整数.程序ー边读入整数,ー边构造ー个以大到小顺序链接的链表,直至输入。时结束.然后顺序输岀链表上各表元的整数值.主函数毎读入ー个整数,就调用函数!nsert。,函数insert。将还未岀现在链表ト的整数板从大るI小的顺序插入るI档表中,为了插入方便,链表在表首有一个辅助表元.注意:不能修改程序的其他部分,只能修改inser!。函数.#includeclassNODEpublic:intval;

52NODE*next;voidinsert(NODE*list,intx)NODE*u,*v,*p;u=list;v=u->next;while(v!=NULL&&xval)/・寻找插入位置・/U=V;v=v->next;}下ー个位置插入,指针后移一位。if(v==NULL||x>v->val)/・判是否要插入新表元7(p=newNODE;p->val=x;r生成新表元ッp->next=v;u->next=p;/・插入新表元・/)voidmain()intx;NODE*head,*p;/・首先建立只有辅助表元的空链表7

53head=newNODE;head->next=NULL;std::cout«"Enterintegers:"«std::endl;while(1){std::cin»x;if(x==0)break;insert(head,x);)for(p=head->next;p!=NULL;p=p->next)std::cout«p->val«'std::cout«std::endl;do{p=head->next;deletehead;head=p;}while(p);)使用VC6打开考生文件夹下的源程序文件advacpp.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)重载运苴符mt,谙在注释俨*******1********后添加适当的语句.(2)重载运算符“<<”,淸在注释ル********2********后添加适当的语句.(3)在主函数mam()中定义变量一并调用对象的mti云菖符,给变最赋初值カ10,港洋洋释俨*******3********后添加适当的语句.(4)调用obj的“<<”运算符输出:Test注意:増加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码・#includeusingnamespacestd;classMyClass(public:〃********〔********operatorint()cout«"intH«endl;return10;〃********2********operator«(char*str)(cout«str«endl;}

54intmain()(MyClassobj;/********inti=int(obj);int(obj)〃********4********obj«"Testw;return0;)ASSERT的用法ASSERT(booleanExpression):首先:booleanExpression参数是一个bool表达式。用法:当程序运行到该语句的时候,程序会检查booleanExpression这个表达式是真还是假。如果条件符合,程序继续运行下面的代码;如果是不符合,那么持续运行会被卡在这里。不往下面走,并有程序弹出错误对话框,指示是由于booleanExpression这个条件符合导致的报错。作用:ASSERT(booleanExpression)语句一般用来检查ー些必须符合的条件,如果不符合条件,则不让程序继续运行下去。assert是编译过程中判断语句是否成功(合法)的函数也是一种断言语句。主要用来调试程序就是说Debug(调试)的时候,ASSERT(*******这句要运行,但是到了release的时候,ASSERT(*******)这句就忽略不运行,作检查用,release时不运行,是为了提高速度。/**使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,完成空出部分程序.函数皿对N[4])的功能是用4个数字,组成互不相同且无重复数字的三位数,并将满足所有条件的数字输出到屏幕,并且每输出ー个三位数字就换一行.程序分析:可填在百位、十位、个位的数字都是2、4、6、0.组成所有的排列后再去掉不满足条件的排列.如果判定第一个数字是0则也去掉.#includevoidfun(intN[4])inti,j,t,n;for(i=0;i<4;i++)for(j=0;j<4;j++)for(t=0;t<4;t++)if(N[i]!=O&&((N[i]!=N[j])&&(N[j]!=N[t])&&(N[t]!=N[i])))(n=N[t]+10*NO]+100*N[i];cout«n«endl;

55intmain()intN[4]={2,4,6,0);fun(N);return0;使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,完成空出部分程序,使函数加)实现以下功能:找出ー个整数,它加上100后是ー个完全平方数,再加上268又是ー个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后开方,如果开方后的结果满足条件,即是结果.voidfiin()(longinti,x,y,z;for(i=U<100000^++)(x=sqrt(i+100)i产域加上100后开方后的结y=sqrt(i+268);尸y为再加上268后开方后的yM*^**\*,,クノアI,1ノjj结果・/if(x*x==i+l00&&y*y==i+268)户如果一个数的平方根的平方等于该数,这说明此数是完全平方数・/cout«i«endl;T-48=1使用VC6打开考生文件夹下的源程序文件modi.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序的执行结果为:112112321123432112345432112345654321注意:错误的语句在/********found*******ッ的下面,修改该语句即可。#include#includevoidmain()intfor(i=1;i<=6;i++)for(j=1;j<=20-3*i;j++)cout«",********fou-,********for(k=1;k0;k-)cout«setw(3)«k;cout«endl;

56)}注意setw();使用VC6打开考生文件夹下的源程序文件advacpp,耳中定义的类并不完整,按要求完成下列操作,将类的定义补充完整・完成以下功能:(1)声明类C1,淸在注释俨*******1********后添加适当的语句・(2)为类CO増加友元函数fuM),请在注释“********2********后添加适当的语句.(3)カ挙C1増加おホ函對fu!め,请在洋経,广********3*******)1<后添加适当的语句.(4)函数fun()返回C1对象中的变量和CO的静态变量的相加之和,谙在注释俨*******4********后添加适当的语句.注意:增加代码,或者修改代码的位置已经用符W表示出来.请不要修改苴他的稈序代码.#include〃********〔********classC1;classCOprivate:staticintm_CO;yy********2********friendintfun(C1&obj);intC0::m_C0=10;classC1private:intm_C1;I******3********friendintfun(C1&obj);public:C1(inti)m_C1=i;)};intfun(C1&obj)returnobj.m_C1+C0::m_C0;intmain()C1obj0(10);cout«fun(objO)«endl;return0;}第強::return应改为returnobjl.m_C0==TRUE&&.obj2.m_Cl==TRUE,使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,实现函数fun(mtA0,intn)>用选择排序法把数组排序.提示:选择排序法的思想是:(1)反复从还未排好的那部分线性表中选择出关键字最小的节点;

57(2)按照从线性表中选择出的顺序排列节点,重新组成线性表;(3)百哥未梯用的那部分为空,则重新形点,重新犯成线性表:(3)直到未排序的那部分为空,则重新形成的线性表是ー个有序的线性表.补充函数EKintA口,intn),实现选择排序.注意:淸勿改动主函数.#include#defineN5voidfun(intA[N],intn)intfor(i=0;i=A(H时则不交换{t=A[i];A[i]=A[k];A[k]=t;)}intmain()intA[N卜{143,7,9};fun(A,5);for(inti=0;i#defineMAX_LEN1024classCMyClass(public:CMyClass()(〃********〔********

58m_Len=0;)intAdd(intn)(for(inti=O;ireturn0;}intisMemberOf(intn)for(inti=O;i

59(CMyClassobj;obj.Add(2);obj.Add(4);obj.Add(5);obj.Add(10);obj.Add(2);obj.isMemberOf(4);obj.isMemberOf(11);obj.Del(5);obj.Del(2);obj.isMemberOf(2);obj.isMemberOf(5);return0;}■一一10・不要改成fun(C0&oInt型数据改错时不要实例化,如第1处:应添加脓プvoid加つ幺讪,int);bj,intI,intj)使用VC6打开考生文件夹下的源程序文件modicpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为:50150注意:错误的语句在ノ********砧1md********曲下面,修改该语句即可.#includeinta=10;classCOpublic:CO。(a=b=0;)voidprintf)(/********found********/cout«a«b«endl;)voidfun(inta)(/★★★★★..★found********/this->a+=a;)voidfun2()(

60/........found********Ia+=::a;}private:intatb;);voidmain(){COobj;obj.fun(5);obj.print();obj.fun2();obj.print();)第1处:coutvvavbvvendl,应改为cout«a<a+=a,第3处:a—a,应改为a+=::a,使用VC6打开考生文件夹下的源程序文件advacpp.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,实现以下功能:(1)完成Bo。膜构造函数,对整形变量ID和作者Autho磁行赋值,淸在注释伊*******1********后添加适当的语句.(2)完成类Books的析构函数,释放申谙的内存,请在注程俨*******2********后あ加适当的语句・(3)完成类Books的AddBoo国数,请在注释伊*******3********后添加适当的语句.(4)完成Books类,用于由书的ID检索到作者的函数char*GetAuthoi(mtnID)»淸在注释"********4********后添加适当的语句.注意:除在指定位置添加语句之外.请不要改动程序中的其他内容.#include#includeclassBook(public:intm_ID;charm_Author[32];public:Book(intID,char*Author)(m」D=ID;〃********〔********strcpy(m_Author,Author);)};classBooks(private:classNode(public:Node*next;Book*book;}*m_pBook;public:Books()(m_pBook=NULL;)〜Books。(

61〃……**2ハ***…while(m_pBook!=NULL)为什么{Node*p=m_pBook->next;deletem_pBook->book;deletem_pBook;m_pBook=p;}intAdd(intnID.char*Author)(Node*p=m_pBook;Node*q=NULL;〃********3********while(p!=NULL)有构造才有析构(if(nID==p->book->m_ID)(return0;)q=P;p=p->next;}if(p==NULL){p=newNode;p->next=NULL;p->book=newBook(nlD,Author);}if(q==NULL)(m_pBook=p;}else(q->next=p;)return1;)char*GetAuthor(intnID)(Node*p=m_pBook;“********4********

62while(p占NULL)(if(p->book->m_ID==nID)(returnp->book->m_Author;p=p->next;

63}return0;}};intmain()(Booksobj;obj.Add(2,nABM);obj.Add(4,"CDM);obj.Add(5,"EFM);obj.Add(10;'EDM);return0;使用VC6打开考生文件夹下的源程序文件modi.cpp,该程序运行时有错误,淸改正其中的错误,使程序正确运行.并且使程序输出的结果为:OK注意:错误的语句在Z********fbund********/的下面,修改该语句即可.#includeclassCOpublic:C0()(a=b=0;)protected:inta,b;****foun,**********classC1:publicCO(public:此处相当难/******ound**********/C10()/found/virtualvoidfun()=0;};classC2:publicC1public:C2()a=0;b=0;)voidfun()(cout«"OK"«endl;

64voidmain()(C2obj;C1*p=(C1*)&obj;p->fun();使用VC6打开考生文件夹下的源程序文件advacpp.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整・完成以下功能:(1)定义MyTime的私有成员函数year、month类型为mt,淸在注释俨*******1********后添加适当的语句・(2)补充完成MyTime的构造函数,完成对vear、month的赋值,请在洋释俨*******2********3********后添加适当的语句.输出格式如下:CurTime:xxyearxxmonth注意:避示两位0~9的数字,如05year01month.(4)完成对month的増加函数AddMonth(intm),请在注释俨*******4*******11•后添加适当的语句.注意:除在指定位置添加语句之外,话不要#includeclassMyTime(private:〃********〔********intyear,month;public:MyTime(intyear,intmonth)此处难当year给year赋值时使用this->year=year;this->month=month;this指针voidprint()(chartempi[3];chartemp2[3];tempi[0]=(year%100)/10+’〇';temp1[1]=(year%10)+'〇';temp2[0]=(month%100)/10+,〇';temp2[1]=(month%10)+’〇';〃********c********tempi[2]=0;temp2[2]=0;此处很难字符串结尾为‘、〇';cout«"CurTime:"«temp1«"yearn«temp2«"month"«endl;)voidAddMonth(intm)(month=month-1+m;〃********4********year+=month/12;注意表述

65month=month%12+1;)};intmain()(MyTimeobj(2004,10);obj.AddMonth(3);obj.print();return0;}删去数m®即m[i+1]=m[i+2];使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码。补充函数fhn(longs,long*t),使之从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中・例如,当s中的数为:7654321时,t中的数为:642.注意:请勿改动主函数.#includevoidfun(longs,long*t){longsl=10;s/=10;*t=s%10;while(s>0)

66s=s/100;*t=s%10*sl+*t;si=si*10;))voidmain()(longs,t;cout«MPleaseenters:M«endl;cin»s;fun(s,&t);cout«MTheresultis:"«t«endl;return;}评注:7654321来说,7654321/10%10=2:7654321/10/100%10*10=40:7654321/10/100/100%10*10*10=600;600+40+2=642;使用VC6打开考生文件夹下的源程序文件advacpp.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整・完成以下功能:(1)完成构造函数的定义,使得数据成员变量m_filename和m_contex为空,内容长度m_CtxEen为〇.话示主释俨*******i********后制口适当的语句.(2)完成函数Wnte。函数,用来对context*)容进行设置埴充内容,如果以前有内容,则删除以前的内容,重新埴写.请在注释俨*******3********后添加适当的语句.(3)完成CopyO函数,完成将Source的内容拷贝到当前的文件内容中,请在注释ノ/********4********后添加适当的语句.(4)完成析构函数,对Contex内存的释放.淸在注释俨*******2*******1•<后添加适当的语句.#includeclassCMyFile(private:charm_filename[64J;char*m_contexJ实际是ー个数组intm_CtxLen;public:CMyFile()(〃********イ********m_filename[0]=0;较难(第一个元素即为结尾元素‘、〇’;)

67m_contex=NULL;m_CtxLen=0;)-CMyFile()(if(m_CtxLen)〃********2********delete[]m_contex;)voidOpen(char*strjntlen)(for(inti=0;itemplateclassCMyArray

68(private:T*data;intm_Len;public:CMyArray(intlen)(m_Len=len;〃********〔********data=newint[m_Len+1];int应该为Tfbi(mti=lア101++){fbKintj=lj<=ij++)输出9*9乘法口诀表时{注意最后结果是巧还是j*i;常见return方式第砌::应添加return(cl.real==c2.real)&&(cl.imagp==c2image),最模糊的表述:使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,完成空出部分程序•函数实现的功能是:如果函数双血gntk)中的n=4,则输出4=3+1牛2+24=2+1+14=1+1+1+1注意:只能补充函数冋),请勿改动其他部看不懂#include#defineMAXN100inta[MAXN],r[MAXN];voidrd(intn,intk)(inti,j;保证a[k-1]不能超过nfor(j=n=1;j-)a[k]=j;if(j==n)cout<

69rd(n-j,k+1);)}inttest_data[]={3,4,5};voidmain(){for(inti=0;i补充空出的代码.函数fuMchai*des,chai*str)的功能是去控字符串stt中相同的字母,并将处理后的结果存到des所指的字符串中・例如:输入:ThisisatestI输出:Thisate!注意:不能修改程序的其他部分,只能补充fW)函数.#includevoidfun(char*des,char*str)(inti;des[0]=0;for(i=0;str[i]!=0;i++)(boolisAdd=true;intj;for(j=0;desO]k〇;j++)if(str[i]==des[j])(isAdd=false;)}if(isAdd)(des[j]=str[i];des[j+1]=0;))}voidmain()(

70charstr[1024];chardes[1024];cout«Hpleaseinputastring:M«endl;cin.getline(str,1024);fun(des,str);cout«des«endl;return;}用bool型,此时。表示空字符。在开头必须指定正确时的值。使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:00注意:错误的语句在J********fbund*******サ的下面,修改该语句即可.#include厂・……found*……ッ较难enumMyEnum(Enum_1,/********foun,**m/);structMyStruct(ハ……*found***/intEnum_1;};voidmain()inti=Enum_1;MyEnumt=Enum_1;cout«i«endl;cout«t«endl;(1)定义私有常量PI,请在注释俨*******1********后添加适当的语句.(2)完成类的私有常量PI的赋值,以及完成对半径啲赋值。请在注释俨*******2********后添加适当的语句.第1处:应添加constdoublePI,第2处:Round(intr)应改为Round(intr):PI(MY_PI)使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,淸改正程序中的错误,使程序输出的结果为:1注意:错误的语句在Z********fbund*mサ的下面.修改该语句即可・#includestructMyStruct(

71union(intx;charc[4];};/*****★★サ0リハイ********/};voidmain()(MyStructt;/********fcJ]ハイ********/t.c[O]=1;难t.c[1]=0;t.c[2]=0;/********1—・]ハイ********/t.c[3]=0;难cout«t.x«endl;)注意(4)定义类Derivel的对象指针dl,类Denve2的对象指针d2.其初始化值分别为1和2・请在注释俨*******4********之后添加适当的语句.voidmain()Iノ********4fun(d1);fun(d2);}_第45t:应添加Derive1*dl=newDerivel(l);Derive2*d2=newDerive2(2),使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:i=5i=aN15注意:错误的语句在J********砧皿ザ*******而下面,修改该语句即可.#includeclassMyClass{public:templatevoidfun(Tt)(/********found********/

72staticTi=0;难if(t>i)(i+=t;)cout«"i=M«i«endl;)};voidmain()(MyClasst;t.fun(5);/********f0und****・***/t.fun((char)97);floati=10.0;/********found*m*/t.fun((int)i);难)使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,补充空出的代码.函数Tnxn(char*str)实现的功能是,如果字符串最前面有空格或者不可打印字符,则全部去撞.然后返回转换后的字符串.注意:不能修改程序的其他部分,只能补充TrimO函数.#include#includechar*Trim(char*str)(for(inti=O;str[i]!=0;i++)(if(str[i]!=1'&&isprint(str[i]))判断是否可打印break;)returnstr+i;}voidmain()(char*str=〃AbcDeFH;cout«Trim(str)«endl;return;

73使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:ml=5注意:错误的语句在Z********fbund*******サ的下面,修改该语句即可・#includeclassMyClass(public:/********1—・]ハイ********/void*GetM1()难(return&m1;)voidprint()(cout«"m1=M«m1«endl;)private:intml;voidmain()(int*p;.found********/MyClasst;*****und**«*****/p=(int*)t.GetM1();*p=5;t.printQ;(2)定义类Pomt的构造函数,完成给私有数据成员加娘!赋值,并且两个参数的岐省值都为〇.淸在注释伊*******2*******■•<之后添加适当的语句.Point(floata=0,floatb=0){x=a;y=b;}voidpint(){cout«"x="«x«endl;cout«My=M«y«endl;}private:floatx,y;advacpp.学校敎务处要为任课老师开发ー个学生管理系统,需求如下:(1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的ー科成绩,只有任课老师可以修改,如果学生升学了,比如由本科升到研究生,原来的信息还有效,而只需添加研究生的必要信息,不过现在不必马上实现,但应当有所考X^B(2)学生的所有信息可以查看,但也只有学生自己オ有这个权利.(3)学生的信息可以从文件中读取来构造信息库,需要把信息输出到屛幕以便核实,但这需要任课老师来完成.

74(4)老师能提供所教学生的完整信息列表,同时可按成绩高低排序.(5)为了便于学校评定奖学金,需要单独杳找成錯長高的同学(一般不采用杷成绩单全部排列后来选取,可能这比较耗费时间,虽然要求不太合理,但要按用尸的需求操作,同时需要指出的是,如果成绩最高者有数名,需要ーー列出).(6)由于学校的机器比较老,内存严重不足,毎个老师帯的学生数不一样,但也不会超过50人.以上功能的程序框架已经形成,考生需要按昭需求来逐个实现.

75以上功能的程序框架已经形成,考生需要按照需求来逐个实现・(1)请在注释俨・*****り********之后添加适当的语句,以便实现功能需求(1)•(2)请在注释伊*******2********处添加适当的语句,成绩单排序功能.查找成绩最高学生名单。天:需修改mainf)キ函数9当得そ1下面的結-U101■■101■»5ロ006II1-IJL07話00煖899788姓名学号成绩李明1000297里斯1000797周彪1000189.5江波1000388秦明1000681周彪1000579.5李梅1000476杳询成结長高的学牛信息:1AWWI•W查询成绩最高的学生信息:里斯1000797李明1000297注意:除在指定位置添加语句之外,谙不要改动程序中的其他内容.#include#include#include#defineN50classCTeacher;classCStudent{public:CStudent(char*name="未知”,char*number="00000",doublemark=0.0)(intlen=strlen(name);m_name=newchar[len+1];strcpy(m_name,name);strcpy(m_number,number);m_mark=mark;)~CStudent()delete[]m_name;)voidshowMsg()(cout«m_name«M\r«m_number«"\r«m_mark«endl;)protected:

76char*m_name;charm_number[5];doublem_mark;〃★*******〔********friendclassCTeacher;};classCTeacher(public:CTeacher(){};〜CTeacher(){for(inti=0;i

77}voidCTeacher::Sort()(doublesum=0;for(inti=0;im_mark>m_pStu[index]->m_mark)index=j;)I/********2********if(index!=j)难(CStudent*ps=m_pStu[i];m_pStu[i]=m_pStu[index];m_pStu[index]=ps;))}voidCTeacher::Display()(coutvv”姓名ぜvv”学号ぜvv”成绩ゼvvendl;for(intj=0;jshowMsg();))intCTeacher::Best(CStudent*pS[])(intindex=0;intcount=1;〃ー……3……**pS[0]=m_pStu[0];难for(intj=1;jm_mark>m_pStu[index]->m_mark)count=1;index=j;pS[count++]=m_pStu[index];)

78elseif(m_pStu[j]->m_mark==m_pStu[index]->m_mark){index=j;pS[count++]=m_pStu[index];)returncount;}voidmain()(CTeacherTeacher;CStudent*pStudent[N];Teacher.lnput();Teacher.Sort();Teacher.Display();coutvv”査询成绩最高的学生信息:"vvendl;intn=Teacher.Best(pStudent);while(n-)(pStudent[n]->showMsg();))使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,补充空出的央式函数TrimRight(cha*des,chai*stt)实现的功能是:(1)如果字符串最后面有空格或者不可打印字符,则全部去掉;(2)返回转换后的数据到des,并且指针作为返回值返回・は宣:不飴修改程京的苴加前会,Q的外本#include#includechar*TrimRight(char*des,char*str)(intlen=0;inti;for(len=0;str[len]1=0;len++);len—;for(i=len;i>=0;i-)if(st中]』…&&isprint(str[i]))break;)for(len=O;len<=i;len++)(

79des[len]=str[len];)des[len]=0;returndes;}voidmain()(chardes[1024];char*str="aadfragcout«str««endl;cout«TrimRight(des,str)«H<-M«endl;return;使用VC6打开考生文件夹下的源程序文件modrcpp,但该程序运行时有错,话改正程序中的错误,使程序输出的结果为:100注意:错误的语句在Z********ffeund********/的下面,修改该语句即可・提示:定义为ー个整型数据位长的变量・#include/********found********/typedefstructfound********/inti:32;intj;}s;voidmain()(Sobj;obj.i=100;obj.j=10;/********foundint*p=(int*)&obj:cout«*p«endl;)全错使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,淸改正程序中的错误,使程序输出的结果为:539注意:错误的语句在ノ********fbund********郎)下面,修改该语句即可・#includeclassMyClass(private:intm_Number;

80intAdd(inti)(returnm_Number+=i;)intSub(inti)(returnm_Number-=i;}intMul(inti)(returnm_Number*=i;)/*****★★サ0リハイ********/typedefint(MyClass::*FUN)(int);/********found********/FUNfun[3];public:MyClass()(fun[O]=MyClass::Add;可以判定MyClass::*FUNfun[1]=MyClass::Sub;fun[2]=MyClass::Mul;m_Number=0;)intCallFun(inti,intj)(/.......サ〇リハイ......../return(this->*fun[i])(j);)};voidmain()

81MyClassobj;cout«obj.CallFun(0,5)«endl;cout«obj.CallFun(1,2)«endl;cout«obj.CallFun(2,3)«endl;全错使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:7017注意:错误的语句在Z********fbund********/的下面,修改该语句即可.#include/*******サ0ロnd********jvoidmain(),♦♦★★★★★★found********/inti=0106;8进制/*****★★*found********!intj=0x11;16进制cout«i«endl;cout«j«endl;return;)综合应用题#include#include#defineN20有此语句时可能指定数组大小classEmployee{private:〃********〔********charname[N],street[N],city[N],zip[N];public:Employee(char*n,char*str,char*ct,char*z);voidchange_name(char*n);voiddisplay();boolequal(char*n);};Employee:Employee(char*n,char*str,char*ct,char*z)strcpy(name,n);strcpy(street,str);strcpy(city,ct);strcpy(zip,z);)voidEmployee::change_name(char*n)11a3strcpy(name,n);}boolEmployee::equal(char*n)(〃********4********returnstrcmp(name,n)==0;判断是否是真

82)voidEmployee::display()(cout«name«""«street«"cout«city«""«zip«endl;}voidmain(void)(Employeeemp[5]=(Empioyee("张建","武侯路311号“,”成都","600000"),Employee("李明","青牛街201号”,"宜宾","500000。,Employee("赵刚","南山路112号","重庆","400000"),Employee("李欣","南京路244号","上海","20000〇"),Employee("周彪","车城路115号","沈阳","10000〇"));for(inti=0;i<5;i++)emp[i].display();cout«"

83修改、"周彪ヾ的名字为ヾ黎明、"

84"«endl;for(intj=0;j<5;j++)Iif(emp[j].equal("周彪")){〃********匚********emp[j].change_name("黎明");emp[j].display();break;)))ー繭VC6打开舍生文件夹下的源程序文件mod!cpp,应该程序运行时有错,请改正程序中的错误,使程序输出的结果为:10注意:错误的语句在/********found********/的下面,修改该语句即可.

85#includeclassMyClasspublic:/********found********/MyClass(inti):m(i){/*★★*****found********/)voidprint()(cout«m«endl;)private:intm;};voidmain()(/********found********/MyClass*p=newMyClass(10);难p->print();return;01234f67890.0001.0001.4141.7322.0002.2362.4492.6462.8283.0003.1623.3173.4643.6063.7423.8734.0004.1234.2434.3594.4724.5834.6904.7964.8995.0005.0995.1965.2925.3855.4775.5685.6575.7455.8315.9166.0006.0836.1646.2456.3256.4036.4816.5576.6336.7086.7826.8566.9287.0007.0717.1417.2117.2807.3487.4167.4837.5507.6167.6817.7467.8107.8747.9378.0008.0628.1248.1858.2468.3078.3678.4268.4858.5448.6028.6608.7188.7758.8328.8888.9449.0009.0559.1109.1659.2209.2749.3279.3819.4349.4879.5399.5929.6449.6959.7479.7989.8499.8999.950按要求完成下列操作,将美的定义补充完整.使用VC6打开考生文件夹下的源程序文件advacpp,这个程序完成平方根表的打印.其输出如下:0123456789其中定义的类并不完整,(1)(2)语句.(3)(4)为文件输出定义对象埴,请在注释〃********1********后添加适当的语句.设置第一行的0,1等之间的宽度为6,请在注程〃********2********后添加适当的设置小数位为固定的3位,淸在注释〃********3********后添加适当的语・句・完成平方根的求值,请在注桎〃********4********后添加适当的语句.#include#include#includeusingnamespacestd;voidmain()inti;//********〔********ofstreamfp;必须是ofstream不能是ifstreamfp.open(Habc.txt");tp«"r;for(i=0;i<10;i++)IIit*******ウ********fp«setw(6)«i«"fp«endl«M+”;for(i=0;i<10;i++)fp«"メメ***キ*******fp«fixed«setprecision(3):固定用fixedfor(i=0;i<10;i++)

86fp«endl«setw(2)«i«"|";for(intj=O;j<1O;j++)fp«setw(7)«sqrt(i*10+j);fp<

87(2)完成IdCard类的构造函数,要求性别sex的缺省值为“男”,民族nation的缺省值为“汉族”,其他数据成员的缺省值为空字符串("").淸在注释“〃・*******2*******”之后添加适当的语句.(3)把EmployeeCard的成员函数visit设为IdCard的友元函数.淸在注释“//********3*********之后添加适当的语句.(4)补充EmployeeCard成员函数visit的类外定义.淸在注释“”********4********"之三添加适当的语句.’¢5)在mainQ函数中调用EmployeeCard成员函数visit访冋IdCard类对冢的数据成员.淸在注释“〃********5*********之后添加适当的语句.注意:除在指定位置添加语句之外,淸不要改动程序中的其他内容.#include#includeclassIdCard;classCard{charcname[34];〃卡名charbname[34];〃人名charld[24];〃卡号public:Card(char*cn="”,char*bn="",char*id="")(strcpy(cname,cn);strcpy(bname,bn);strcpy(ldjd);}voidprint();};voidCard::print()(coutvv"卡名:"

88voidEmployeeCard::print()注意此处3就不奇怪了(Card::print();coutvv”公司名:"vvcompanynamevvendlvv"部门"vvsectionvvendl;)classldCard:publicCard(charsex[4];〃性别charnation[20];〃民族charaddress[50];public:Iy********2********ldCard(char*cn="",char*bn="",char*id="H,char*ad="",char*sx="男〃,char*na="汉族"):Card(cn,bn,id)(strcpy(address.ad);strcpy(sex.sx);strcpy(nation,na);}voidprint();〃********O********friendvoidEmployeeCard::visit(ldCard)特殊};voidldCard::print()(Card::print();coutvv"性别:"vvsexvvendkv"民族:"«nation«endlvv"住址:"«address«endl;)〃********4********voidEmployeeCard::visit(ldCardx){EmployeeCard::print();//visit的函数体coutvv"民族:"vvx.nationvvendl;cout«"ftSO:"«x.sex«endl;coutvv"住址:H«x.address«endl;}voidmain(void)(EmployeeCardb("Tド,"黎明","1669〃,”生意科技”,"エ艺部");IdCardc(”居民身份证・“黎明”,”510722198203130359”,"广州天河211号”);b.print();错误b.visit(c);)全错!

89使用VC6打开考生文件夹下的源程序文件・advacpp.这个程序完成输入一个表示生日的8位数字,然后分年、月、日显示这个生日.例如,如果输入的是“20041212”,则输出是:出生年:2004出生月:12出生日:12完成以上功能,其中定义的类并不完整,按要求完成下列麋作,将类的字义补充完整.includevoidmain(){usingnamespacestd;chartemp[20];cout«Mpleaseinputastring:M«endl;〃********〔********必须这样定义inti;coutvv"出生年:for(i=0;i<4;i++)〃********c********cout«temp[i];cout«endl;coutvv"出生月:I/********c********for(;i<6;i++)不赋初值cout«temp[i];cout«endl;I/*★**★★**4********coutvv”出生日:M«&temp[6]«endl;使用VC6打开考生文件夹下的源程序文件・simp.cpp.阅读下列函数说明和代码,补充空出的代码・函数皿intn)完成的功能是将ゆ解为质数的积的形式.如90=2X3X3X5.输出的内容的格式是:注意:不能修改程序的其他部分,只能补充fhnO函数.#includevoidfun(intn)cout«n«H=";for(inti=2;i<=n;i++)while(n!=i)如果相等{if(n%i==O)(cout«i«M*";n=n/i;)elsebreak;))cout«n«endl;)voidmain()(intnumber;

90cout«Mpleaseinputanumbe匚H«endl;cin»number;fun(number);return;)繭VC6打开考生文件夹下的源程序文件adva.cpp.这个程序从界面输入数字,然后由小到大插入到数组中.最后输入〇,结束输入.并且把数据输出到文件中•提示,这个程序存储的数字中不可能包含。.其中定义的类并不完整,按要求完成下列操作,将美的定义补充完整.(1)请在析构函数中完成数据的释放,请在注释〃********】***后添加适当的语句.(2)完成重载运其符“<<"的定义,淸在注释〃********2********后添加适当的语句.(3)完成重载运其符函数“<<”缺少的部分语句.淸在注程〃********3*后添加适当的语句.(4)完成重载运尊符“ロ”的定义,请在注程〃4********后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#includeclassMyClass(private:intMaxLen;intdatalen;int*data;public:MyClass(intlen)ネU!}(L间!i|M:MOlHqossbqAw}OuieiupioA;((*ua|e)epujniaj)()uai)a6iui(![i]eiepujniaj)西市隼附降車(い5)ロJOlBJSdo♦♦♦♦♦♦♦♦'P***m*ノノ{:1=[++Ua|BlEp]B)Ep♦♦¥¥¥¥,,(/*¥¥¥***»//((:diuai=1:l=[jJeiBp![i]e}Bp=dtuaiiui)(【!圍ep>))n)(++!:0=i[jlBiep22U9|BIBP>!!0=!)JO)i!R)

91(liui)»jojEjado午*******G***m*ノノ(iE|Ep[]a】a|ap♦♦¥¥¥¥,,L*¥¥¥****〃)()ss引つスバ〜{:0=[i]eiBp(++!:ua|>!:o=iiui)jo|![ua|]iuiMau=Ejep!〇=U3|E|Ep!ua|=uaqxE^icout«"pleaseinputanumber:"«endl;cin»t;if(t==0)break;obj«t;)for(inti=0;iclassMyClass(public:/***4r****fc.[nd********/MyClass(intx):a(x){b+=x;}/********found********/staticvoidprint(MyClassc)此处很难(cout«"a="«c.a«n\tb="«c.b«endl;)private:constinta;staticintb;

92};/******nd**★★★**★/intMyClass::b=10;voidmain()(MyClassobj(4);MyClass::print(obj);return;使用VC6打开考生文件夹下的源程序文件advacpp.这个程序含有一个类MyStnng,完成字符串的操作.其中定义的类并不完整,按要求完成下列操作,将美的定义补充完整.(1)完成构造函数,默认设置存请的字符串长度为1023个字符,在注释〃1********后添加适当的语句.(2)完成构造函数,设置固定长度和内容的字符串,请在注程〃・2后添加适当的语句.(3)完成重载运算符“<<”的定义,淸在注経〃・3后添加适当的语句.(4)补充重载运管符的语句,使得字符串操作正确,淸在注释〃********4********后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#includeclassMyString(private:intstrlen;char*strdata;public:〃★*******〔********MyString(intlen=1023)(strlen=0;strdata=newchar[len+1];strdata[O]=0;)MyString(char*str,intlen)(strlen=len;yy***««««*2********strdata=newchar[len+1];for(inti=0;ivlen;i++)strdata[i]=str[i];strdata[len]=0;)~MyString()(delete[]strdata;)char,getstr()(returnstrdata;)//********Q********MyString&operator«(charc)strdata[strlen++]=c;〃********4********strdata[strlen]=0;return*this;

93)};voidmain()(MyStringobj1(“abc”,3);cout«obj1.getstr()«endl;MyStringobj;while(1)(charc;cout«"Pleaseinputachar:cin»c;if(c==*q')break;obj«c;)cout«obj.getstr()«endl;使用VC6打开考生文件夹下的源程序文件advacpp.这个程序包含ー个模板类Data,完成对数据的“+”操作,其中定义的美并不完整,按要求完成下列操作,格类的定义补充完整.(1)完成Da旗的重载运算符“+”的定义,请在注経〃********1********后添加适当的语句.(2)完成定制字符串模板的数据定义,定义成员变量位固定大小为1024个字节的char型变量,淸在注释〃********2*******1•・后添加适当的语句.(3)完成字符串指针的赋值,请在注释〃********3********后添加适当的语句.(4)完成字符串的追加,请在注程〃********4********后添加适当的语句.注意:增加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#include#includetemplateclassData(private:Tdata;public:Data(Tt)data=t;〃********〔********Toperator+(Tt)(data+=t;returndata;)};templateoclassData(private:I/********2********chardata[1024];public:Data(Tt)(***3********strcpy(data,t);)Toperator+(Tt)(〃********4*★****★★strcat(data,t);ア一串追加即为连接returndata;)};voidmain()(Dataobj1=10;cout«(obj1+20)«endl;Dataobj二"Thisis";cout«(obj+MTest!M)«endl;)

94第3处:case:应改为default:使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:abcdef的注意:错误的语句在/********fbund********曲下面,修改该语句即可.

95#include#include#includevoidmain(),********found********/charstr1[]="abc";/****★★★★found*★★*****jwchar_tstr2[]=L"defM;/********found********jTCHARstr3[]=_T("hij");cout«str1«endl;wprintf(str2);cout«endl;cout«str3«endl;使用VC6打开考生文件夹下的源程序文件sunp.cpp.阅读下列函数说明和代码,补充空出的代码.函数则)完成功能是:两个球队进行比赛,各出三人.甲队为机b、c三人,乙队为X、y、z三人・已经抽签决定比赛名单•有人向队员打听比赛的名单.a说他不和x比,c说他不和x、z比,淸编程序找出三队赛手的名单.输出:a-zb-xc-vinclude#includevoidfun()(chari,j,k;for(i='x';i<='z';i++)(for(j='x';j<='z';j++)(if(i!=j)不能是同一人(for(k='x';k<='z';k++){if(i!=k&&j!=k)条件b-"«j«"c-"«k«endl;(if(i!='x'&&k!=,x,&&k!=,z')cout«"a-"«i<<"

96)voidmain()(cout<<"球赛的对阵名单为:"«endl;fun();return;(1)定义Rectangle类的构造函数,并设长度、宽度的默ス值为0・淸在注释,,俨*******[********”之后添加适当的语句・(2)重载Rectangle类Areaj•成员函数,要求Area」〇函数能在主函数的调用市改变长和宽.清在注福“伊*******2********"之后添加适当的语句.#includeclassRectangle{protected:doublea,b;public:注意:后〃*****★**[********Rectangle(doubleal=0,doublebl=0):a(al),b(bl){}doubleArea_r()(returna*b;)doubleArea_r(doubleal,doublebl)(〃********c********a=al;b=bl;returna*b;)};intmain()(inti=5;intj=6;/********found********/intp=i;要想输出15,16,则必须&p=i;ハ*…***found/int*q=&j;p+=10;(*q)+=10;cout«Hi="«i«endl;cout«Mj="«j«endl;return0;注意讨论0,1的情况

97用递归实现从n人中选出p人intfhn(intn,intk)(ifl:k>n)if(n-k|k=0)return1;returnfun(n-l,k)+fun(n-l,k-l);有100个元素数组a==99则满。(3)完成类的成员函数get。的定义,它的功能是把队列的开头处的元素返回,并且判断a、b是否为空,如果为空则输出MyChssEmpty>否则b自加,并且把b指向的元素返回,淸在注释“********3********后添加活当的语句.classMyClass(intq[100];intatb;public:MyClass()(//********〔a=0;b=0;cout«"MyClassinit"«endl;)voidput(intt)(〃********c********if(a==100)(cout«"MyClassFuir«endl;return;}q[++a]=t;intget()

98〃*******イif(b==O)********应为b==acoutvv"MyClassEmpty"«endl;return0;)returnq[++b];)};改错intmain()(WpW;/********found********/X*pX(pW);X(*px)(&pW);pX->print();return0;使用VC6打开考生文件夹下的源程序文件advacpp.类MyArray实现数蛆的定义•其中定义的美并不完整,按要求完成下列操作,将类的定义补充完整.(1)完成模板的定义,模板第一个为数据的类型名,第二个为数据的长度,请在注释〃(2)添加类的私有成员变量data,“数组的长度为模板的第二个参数的长度,请在注释〃********2**后添加适当的语句.(3)完成类的“口’’的重载,请在注释〃********3********后添加适当的语句.(4)完成字符的类型対象,対冢的第二个参数为10,使得屏幕输出:4cb淸在注释〃********4*******11・后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来.淸不要修改其他的程序代码.#include〃*******★〔********template定义模板时注意classMyArray(〃*m*c********Tdata[MaxLen];利用模板定义数据public:〃********c********T&operator[](intlen)重载时务必带上“参数&”(returndata[len];)intGetLen()returnMaxLen;));voidmain()(MyArrayt;t[0]=5;t[1]=4;cout«t[1]«endl;〃********4********MyArrayt2;t2[0]=99;t2[1]=98;cout«t2[0]«t2[1]«endl;

99)改错题:#includeclassCOpublic:found********/virtualvoidprint()=O;);classC1:publicCO(};classC2:publicCO(};classC3:/*****…found*publicC1,virtualprivateC2(virtualvoidprint()(cout«"C3w«endl;)};intmain()C3obj;/********found*((CO*)(Cr)&obj)->print()1非常非常难return0;)使用VC6打开考生文件夹下的源程序文件adva.cpp.其中类Data实现的功能是对复数的加减功能,请完成以下功能:(1)完成类的构造函数,请在注释〃********1********I后添加适当的语句.(2)增加重载运算符"+=",请在注释〃********2***后添加适当的语句.(3)完成类的重载运算符“()”实现仿函数功能,请在注释〃********3********后添加适当的语句.(4)增加重载运其符"+",淸在注释〃********4***后添加适当的语句.注意:増加代码或者修改代码的位置已经用符号表示出来•不能修改其他的程序代码.#includeclassData(public:〜Data。(cout«m_i«endl;cout«mj«endl;)〃********〔********Data(inti=0,intj=0)(m_i=i;m_j=j;)〃********c********voidoperator+=(Data&obj)(

100this->m_i+=obj.mj;this->mj+=obj.mj;)〃********O********Data&operator()(inti,intj)(this->m_i+=i;this->mj+=j;return*this;)〃********4********Data&operator+(Data&obj)(this->m_i+=obj.m_i;this->mj+=obj.m_J;return*this;private:intmJ,mJ;};voidmain()(DataObj1(2,4);DataObj2;Obj2+=Obj1;Obj2+=Data(2,3);Obj2=Obj1+Obj2;return;使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,淸改正程序中的错误,使程序输出的结果为:x=5y=9注意:错误的语句在Z********fbund*******サ的下面,修改该语句即可.#includeclassCO(public:CO(intx,inty){this->x=x;this->y=y;)voidprintf)(cout«"x="«x«"\ty="«y«endl;)/****★★**found********/friendC0&operator+(C0&,C0&);private:intx,y;};C0&operator+(C0&X,C0&Y)(

101X.x+=Y.x;X.y+=Y.y;/********found********]returnX;)intmain()COobj1(2,4);COobj2(3,5);/*****★★★found*★★*****jCOobj3=obj1+obj2;obj3.print();return0;使用VC6打开考生文件夹下的源程序文件advacpp.这个程序包含类CBinary,完成16位二进制数据的操作.注意数据的O位对应的数组下标是15,最高位15,对应数组的下标是〇.程序输出:00000000000000000000001010000101其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)完成二进制数据的存储变量data的定义,其数据能够表示16位长的字符串类型,请在注释〃********1********后添加适当的语句.(2)完成数据的初始化,请在注释〃********2********后添加适当的语句.(3)重载运算符的声明,请在注释〃********3********■后添加适当的语句.(4)完成函数,实现每位的加法运算,请在注释〃********4********后添加适当的语句.注意:增加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#includeclassCBinary(private:〃********〔********chardata[17];public:CBinary(intt=O)SetData(t)1用set初始化)char*getdata(){returndata;}voidSetData(intt)(data[16]=0;for(inti=15;i>=0;i-)if(t%2!=0)

102data[i]=T;}else{data[i]='O';)t»=1;))〃********3********CBinary&operator+=(CBinary&t)(inttemp=0;for(inti=15;i>=0;i-)(〃********4********switch(temp+data[i]-'O'+t.data[i]-'0f)(case0:break;case1:temp=0;data[i]=T;break;case2:temp=1;data[i]=’0';break;case3:temp=1;data[i]=T;break;default:cout«MERROR!"«endl;return*this;))return,this;)};voidmain()CBinaryobj1;cout«obj1.getdata()«endl;obj1.SetData(310);CBinaryobj2(335);obj2+=obj1;cout«obj2.getdata()«endl;

103使用VC6打开考生文件夹下的源程序文件advacpp.程序中含有一个类CGuest,这个类是ー个数字游戏.游戏规则如下,(1)开始的时候程序随机生成一个数并保存起来,记为Taget,范围在1024~0之间.不包含1024和。.(2)然后输入一个数字,程序提示输入的数字大于Taget,则返回1,小于则返回ー1,否则提示已经胜利,返回。,输入次数超过6次,则返回0,提示失败.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)増加私有整型成员变量Target和size,请在注释〃1*后添加适当的语句.(2)用时间做种子,初始化随机函数,请在注释〃**2*后添加适当的语句.(3)获得0~1024之间,不包括。和1024的随机数,然后赋给Target,请在注释//***3后添加适当的语句.(4)完成函数,判断输入过多的次数则游戏失败,请在注経〃***4********后添加适当的语句。注意:翦加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#include#include#includeusingnamespacestd;classCGuestprivate:〃****★★★・1********intTarget,size;public:voidStart()〃********り********srand((unsigned)time(O));〃********c********Target=rand()%1023+1;注总不包括cout«"GameStartr«endl;size=0;)intguest(intt)*******イ********if(size++>5)cout«MGameOver!M«endl;return0;)if(t>Target){cout«size«n\tHigh!H«endl;return1;)elseif(t==Target)(cout«size«H\tGameWin!!!!M«endl;return0;)cout«size«M\tLow!M«endl;return-1;)

104};voidmain()(CGuestobj;cout«Minput0=QUITM«endl;do{obj.Start();intt;do{cin»t;if(t==0)return;}while(obj.guest(t));}while(1);)

105个数字游戏.其游戏规使用VC6打开考生文件夹下的源程序文件adva.cpp.类CGam建则如下1毎次输入一个1到6之间的数字,或者指出胜利位置,或者程序提示你现在所在的位置,要求再次输入ー个1至(16之间的数字.当输入的数字是〇,则退出游戏.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)定义私有静态字符串数组Info,用来提示当前的操作,现在淸在注释〃********1********后添加适当的语句.(2)判断不合法的输入,则提示玩者,请在注释〃********2********后添加适当的语句.(3)完成静态变量的初始化,请在注释〃********3********后添加适当的语句.(4)判断游戏胜利,则进入下一次循环,请在注释〃4********后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来.淸不要修改其他的程序代include#include#includeusingnamespacestd;classCGame(intcur;〃m**〔********staticchar*lnfo[];public:voidStart()(cur=0;cout«MGameStarting!!!!!”vvendl;)voidStep(intt)(〃********c********if(t<1||t>6)(cout«HlnputError!"«endl;return;)srand((unsigned)time(O));ints=rand()%10;cout«lnfo[s]«endl;s-=3;cur+=(s*t);if(cur<0)cur=0;)coutvv"当前在:"«cur«endl;)boolisWin()(

106if(cur==100)returntrue;returnfalse;));〃********c********char*CGame::lnfo[]=静态数组初始化(”被迫倒退3”,”被迫倒退2”,”被迫倒退r,“原地不动”,”前进V,“前进2",”前进3”,”前进4”,”前进5”,“前进6"};voidmain()(CGameobj;do{obj.Start();do{intt;cout«Hpleaseinputanumber(1-6):指定输入数据只能在16之间2处即可知cin»t;if(t==0)return;obj.Step(t);)//グ・……while(obj.isWin()==false);cout«"WINNERiniir«endl;}while(1);}__(3)完成类CCa屈数GetName中,静态常量字符串常量指针的定义,请在注释俨*******3********后添加适当的语句.(4)完成类CBike函数GetName中,静态常量字符串常量指针的定义,请在注释俨*******4********后添加适当的语句.classCCa匚publicCVehicle(public:intGetWheelCount()(return4;)

107constchar*GetName()(I/********q******★★return"Car";)};classCBike:publicCVehicle(public:intGetWheelCount()(return2;)constchar*GetName(){〃********4********return"Bike";}};改错classCO(protected:voidprint1(){cout«"C0print1"«endl;}ハ*…***found/public:voidprint2()

108cout«MCOprint2"«endl;};nd********/classC1:publicCOpublic:/********found*★★★****!C0::print1();应改为C0::print1;使用VC6打开考生文件夹下的源程序文件advacpp.这个程序的类CFile利用基本的文件操作函数,实现对文件操作的类封装,其中定义的美并不完整,按要求完成下列操作,格美的定义补充完整.(1)在析构函数中关闭文件对象,请在注释〃*******・广*******后添加适当的语句.(2)默认追加的方式打开文件,实现函数Open的定义,请在注程〃********2********后添加适当的语句.(3)完成判断文件是否打开函数,请在注释〃********3********后添加适当的语句.(4)完成文件输出函数,把输入的字符串str存储到对象3指向的文件中,成功则返回true,失败返回felse,淸在注释V******1*^*******1*i后添加适当的语句.注意:增加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#include#includeclassCFile(private:FILE*fp;public:CFile()(fp=NULL;}〜CFile()if(isOpen())打开的オ可关闭fclose(fp);)CFile(char*str,constchar*mode="aM)(Open(str,mode);)〃********2********boolOpen(char*str,constchar*mode="a")fp=fopen(str,mode);if(fp==NULL)returnfalse;有TRUE,FALSE为boolreturntrue;}boolisOpen()(******★★

109returnfp!:NULL:)boolput(char*str)(〃********4*黄***★★★if(isOpen())(returnfputs(str,fp)!=EOF;)returnfalse;)};voidmain()(CFilefp;CFilefp2("dec.txt");fp.Open("abc.txt");if(fp.isOpen()){charstr[1024];cout«"pleaseinputastring:cin.getline(str,1024);fp.put(str);fp2.isOpen()?fp2.put(str):0;))第67次第3处:应添加len=(i>ten)?i:ten;第4$t:应添加fbr(inti=ten-l^>=0;—i)cout«(int)data叱使用VC6打开考生文件夹下的源程序文件modi.cpp>但该程序运行有问题,淸改正main()函数中的错误,使该程序的输出结果为:m_data=20注意:错误的语句在Z********fbund*******サ的下面•修改该语句即可。#includestructMyClass(public:MyClass(){m_data=0;};~MyClass(){};public:

110voidprint()(cout«"m_data=H«m_data«endl;)/********1—・]ハイ********/int&GetNumber()难(returnm_data;}/********found********/voidSetNumber(intnumber)(m_data=number;)protected:intm_data;};voidmain(){MyClassobj;/********1—・]ハイ********/int&t=obj.GetNumber():难t=20;obj.print();

111使用VC6打开考生文件夹下的源程序文件advacpp.类CMyClass完成对字符串的反转,如果输入abed,则反转后输出deba.其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)定义两个变量,ー个是字符数组scr,用来保存输入的字符串,长度为MaxLen,另外ー个des用来保存转化后的号符串.淸在注释〃********1********后添加适当的语句.(2)实现把形参str指示的字符串拷贝至!Iscr中,请在注释〃********2********后添加适当的语句.(3)实现字符串的反转函数,str是输入的字符串,des是转换后的字符串,请在注释〃********3********后添加适中的声・句・(4)利用静态函数实现对象中str曲反转,并将反转后的结果保存到des中,并返回des的字符串指针.请在注释〃********4*******11・后添加适当的语句.注意:增加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#include#defineMaxLen1024classCMyClass(private:〃★*******〔********charscr[MaxLen];chardes[MaxLen];public:CMyClass(char*str=NULL)(inti;〃********り********for(i=0;str»=NULL&&str[i]!=NULL;i++)scr[i]=str[i];scr[i]=0;)staticvoidfun(char*des,char*str)(intstrlen;for(strlen=0;strfstrlen]!=0;strlen++);des[strlen]=0;for(inti=0;i

112chardes[MaxLen];cout«Mpleaseinputastring:cin.getline(str,MaxLen);CMyClassobj(str);cout«obj.fun()«endl;CMyClass::fun(des,str);cout«des«endl;)第69次(1)设xl=0;(2)然后cos(xl)得到x2,如果x2与xl相差小于0.0000001则返回;(3)如果大于0.0000001,则计算cos(x2)进行迭代比较・应说明x1=x2,x2=cos(x1);(1)实现平面上两点之间的距离和,语在注释伊*******1********后添加适当的语句.(4)完成多个坐标之间距离的计算,补充函数缺少的部分,请在注释俨*******4********后添加适当的语句.■宀、・第1处:return应改为return(int)(sqrt((x-t.x)*(x-t.x)+(y-ty)*(y-ty)));第2处:应添加CPoint&operator()(intx,inty)第3处:应添加CPoint(intx=0,inty=0)第45h:应添加result长m_Point[i]^^Point[i+1],try(CTriangleobj(3,4,6);cout«obj.girth()«endl;cout«obj.area()«endl;CTriangleobj2(2,4,8);}〃********4********catch(char*str)cout«str«endl;使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,谙改正程序中的错误,使程序输出的结果为:COnuxnber=100注意:错误的语句在J********(bund********/的下面•修改该语句即可・其他的语句不能修改・#include/********found*★******/classC1;难classCO(intm_Number;

113/********found*……ッ难friendC1;public:CO(intt){m_Number=t;)};classC1(public:C1()()voidoperator«(C0&t){cout«"C0number="«t.m_Number«endl;)};voidmain()(COt(100);C1obj;/********found********/obj«t;)若所有变量均为float型则变量为float型(2)默认为摄氏温度C,否则是华氏温度,则把相应的华氏温度转换成摄氏温度,保存在变量mTe中,请在注释伊*******2********后添加适当前语句.(3)完成到华氏温度的转换,谙在注释********3********后添加适当的语句.classCTemperatureprivate:〃★*******〔********floatm_Te;public:CTemperature(floatt,charc='C)(if(c==C||c==e){m_Te=t;)elsem_Te=toC(t);))floatgetC()

114(returnm_Te;)floatgetF()(returntoF(m_Te);)staticfloattoC(floatt)(return(t-32)*5/9;)staticfloattoF(floatt)returnt*9/5+32;));改错#includeclassCO(public:/********found*m*/operatorint()难cout«"callint"«endl;};classC1:publicCO(nd********/public:/********found********/operator«(int)(cout«"call«M«endl;)};voidmain()(C1t;1»t;t«1;)改错:#includeclassCO

115(intm_Number;public:C0(inti)(m_Number=i;)/********found********/operator-()(m_Number—;)/........found********/operator-(int)(m_Number-=2;)voidprint()(cout«"m_Number="«m_Number«endl;));voidmain()COobj(10);,♦♦★★★★★★found********/obj一;obj.print();-obj;obj.print();)使用VC6打开考生文件夹下的源程序文件adva.cpp.类MyClass在自定义的命名空间MyNameSpace中定义,然后实现了字符串ー=操作符运算.这个运尊删除第一次出现的指定的字符串.Pnnt()函数打印出类对象的字符串.其中定义的美并不完整,捜要求完成下列操作,将类的定义补充完整.(1)定义私有成员变量m_str,请在注释〃********1*******11"后添加适当的语句.(2)完成重载运/符缺少的函数,实现功能:在m_str中查找第一次出现str的位置,然后插除这些字符串,请在注释〃********2*******1t1后添加适当的语句.(3)补充函数,实现打EP出字符串m_str的内容,请在注释〃********3*******11i后添加适当的语句.(4)使用自定义命名空间,淸在注释〃*4********后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#include#includenamespaceMyNameSpaceusingnamespacestd;classMyClass〃********〔********stringm_str;public:MyClass(string&str)m_str=str;)operator+=(string&str){m_str+=str;)operator-=(string&str){intpos=m_str.find(str);〃********c********

116if(pos!=-1)m_str.erase(pos,str.length());}voidprint(){〃********c********cout«m_str.c_str()«endl;);)voidmain(){〃********4***usingnamespaceMyNameSpace;MyClassobj(string("abcdefghijk"));obj-=string("cdeM);obj.print();)全错!!删除元素:for(j=0;j#includeusingnamespacestd;#defineMAX_LEN1024classCMyArray(private:intdata[MAX_LEN];intcurlen;public:CMyArray()(curlen=0;}voidAddData(intt)(〃********〔********data[curlen++]=t;)voidDeldata(intindex)

117if(index>=curlen)return;for(inti=index;i

118M"0=quit

119""1=adddata

120""2=deletedata

121M"3=printdata

122""4=savadata

123""number=M;cin»t;if(t==0)break;switch(t)(case1:cout«Mpleaseinputdata:";cin»t;obj.AddData(t);break;case2:cout«Mpleaseinputindex=cin»t;obj.Deldata(t);break;case3:obj.print(cout);break;case4:(“********4********ofstreamfp;fp-openCout.txt'1);obj.print(fp);fp.close();}break;default:cout«"inputerror!n«endl;

124)}while(1);)改错:#includeboolfun()(cout«MTestFun!"«endl;return1;)voidmain()(/********found********/typedefbool(*FUN)();/********found********/FUNfp=fun;/******nd**★★★**★/if(fp)Ifp();cout«"TestOK!"«endl;))对字符型静态变量初始化:charCSwitch::temp[33]={0};使用VC6打开考生文件夹下的源程序文件modicpp,但该程序运行时有错,淸改正程序中的错误,使程序输岀的结果为:Test!注意:错误的语句在Z********fbund********/的下面•修改该语句即可.其他的语句不能修改・#includenamespaceAnd********/usingnamespaceA;classCO(public:voidxfchar*str)(cout«str«endl;));classC1:publicCOIC0::x;);)voidmain()(/******.*found********ICOobj;.]ハイ********/obj.x("Test!");

125)【薪考答案j第1处:应删除usingnamespaceA;第2处:应添加usingnamespaceA;第3处:objxfTest!”);应改为objCO::x("Test!”);定义构造函数:Complex(doubler=0,doublei=0);voidPrint(){cout«real«"+"«image«Hi**;}〃*m*c********Complexoperator+(Complex&b);〃********4********friendComplexoperator-(Complex&a,Complex&b);};Complex::Complex(doubler,doublei){real=r;image=i;使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,补充空出的代码.函或Rin(doublenumber)通过迭代法返回め平方根・迭代方法:Xn+1=0.5x(Xn+N/Xn).误差小于0.000。000001・注意:部分代码已经实现,话勿改动的30函数代码。#include#includedoublefun(doublenumber)(doublet1,t2=0.0;t1=number;while(fabs(t1-t2)>0.0000000001)(t2=t1;t1=(t2+number/t2)/2.0;)returnt1;}voidmain()(doublenumber;cout«Hpleaseinputanumber:M«endl;cin»number;

126cout«fun(number)«endl;return;)改错#includeenum(/********foun,********/My_Data1=0«注意,号/********f0und****・***/My_Data2=-1/******・リ〇und********/);voidmain()cout«My_Data2«endl;)完成setdata函数,重载运算符〉〉第2处:应添加voidSetData(inty=2005,mtm=l,intd=1)第3处:应添加。QeratorA>(ostieam&cout)注意void使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,补充空出的代码・函致fhrQitA口,intlen,mtt)实现格t插入到已经由大到小排序的数蛆中,并返回数组插入数据后的长度.如果数据已经存在,则不插入,此时返回!en即可・注意:部分代码已经实现,淸勿改动3()函数代码・#include#defineMAX_LEN100intfun(intA[],intlenjntt)(inttemp;inti;for(i=0;i

127)A[i++]=t;returni;}voidmain()(intlen=0;intA[MAX_LEN];intt;do{cout«Mpleaseinputanumber(-1=QUIT):H«endl;cin»t;if(t==-1)break;len=fun(A,len,t);}while(1);for(inti=0;ix=newint(x);/*******サ0リハイ********/this->y=newint(y);#includeusingnamespacestd;classTime;classDate(public:

128Date(inty=2005,intm=1,intd=1)(year=y;month=m;day=d;)〃********[********voidDateTime(Time&t);〃********り********friendvoidDateTime(Date&d,Time&t);private:intyear,month,day;};classTime{public:Time(inth=O,intm=0,ints=0)(hour=h;minute=m;second=s;)I/********2********friendvoidDateTime(Date&d,Time&t);friendvoidDate::DateTime(Time&t);private:inthour,minute,second;};voidDate::DateTime(Time&t)(〃********4********::DateTime(*this,t);)voidDateTime(Date&d,Time&t)(cout«MNowisM«d.year«".M«d.month«'."«d.day«,,<#defineMAX_LEN100voidfun(intA[],intlen.intm)(

129intt;inttemp;for(inti=0;ix=x;this->y=y;)CRect(intx,inty,intw,inth):Point(x,y),pt2(w,h)

130使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,补充空出的代码・函数fun(chai*str,intA口)实现把字符串中的数字取出,然后转换成整数并存入AQ,最后返回转换后的长度・例如:str="w253so250324z450"则A口中的内容为{25325。324450},返回值为5.intfun(chai*str,intA〇)(intresult,intlen=0,boolisAdddata=false;fb/inti=O^='0,&&str[i]<='9')讯isAdddata==false){isAdddata=true;result=0;)result=result*10+str[i]-'01,}else讯isAdddata==true)(isAdddata=false;A[len-H]=result;)})if(isAdddata)isAdddata=false,A[len-H]=result,}returnlen,}用bool型,用整数输出。第86套第1处:voidSet(intx=0,inty)应改为voidSet(intx,inty)第2处:voidMyClass:print()应改为voidprint()第87套第1处:intconstn,mi应改为intconstn^ntm;使用VC6打开考生文件夹下的源程序文件sunpcpp.阅读下列函数说明和代码,补充空出的代码・函及fun(Node*head,intdata)产生一个节点,节点中存入数据data,然后把节点加入到队列中.程序为了方便,提供了一个辅助节点,其内不存储数据・注意:部分代码已经实现,淸勿改动3)函娄代码.#includestructNode(intdata;Node*next;};voidfun(Node*head,intdata)(

131Node*p=newNode;p->data=data;存入数据节点p->next=NULL;辅助结点while(head->next)(head=head->next;)head->next=p;}voidmain()(intdata;Nodehead;head.next=NULL;docout«"pleaseinputanumber:"«endl;cin»data;if(data==0)break;fun(&head,data);}while(1);Node*p=head.next;while(p)(Node*q=p->next;cout«p->data«Mdeletep;P=q;)cout«endl;return;)(1)完成are啲接口定义,话在注释力********1********后添加适当的语句.(2)完成姉*)接口定义,淸在注释力********2********后添加适当的语句。第2处:应添加virtualvoiddraw()=0,•そ・,»i_i■第1处:应添加virtualdoublearea()const=0;classCircle:publicShape

132(Pointcen;doublerad;public:〃«*******c********Circle(doublex,doubley,doubler):cen(x,y),rad(r)必须两个()使用VC6打开考生文件夹下的源程序文件sunpcpp.阅读下列函数说明和代码,补充空出的代码・函数皿chare)实现把从樓盘输入的字符c保存到文件abc.tx!中,直到输入字符“q”后,结束输入・注意:部分代码已经实现,淸勿改动3()函数代码・#include#includevoidfun(chardata)usingnamespacestd;ofstreamfile;file.open(Nabc.txtNJos::app|ios::out);if(fi!e.is_open())file«data;elseabort();file.close();}voidmain()(charc;do{cout«"pleaseinputachar:M«endl;cin»c;if(c=='q')break;fun(c);}while(1);return;}内联函数定义时:inlinevoidshow()void注意(2)完成CHouse的构造函数的定义,注意浴室和卧室都雇于房子,淸在注释伊*******2********后添加适当的语句.CHouse(intlayer,intbedroom,intbath.intarea):CBuilding(layer,bath+bedroom,area)使用VC6打开考生文件夹下的源程序文件’sunpcpp.阅读下列函数说明和代码,补充空出的代码.函数fun(chai*des,chax*strl,chax*str2,char*str3)实现把strl中岀现str2的子符串替换

133成str3,并存放到des指向的字符串中・#include#includevoidfun(char*des,char*str1,char*str2,char*sti^)(intk=0;intstrllen=strlen(strl);intstr2len=strlen(str2);des[0]=0;for(inti=0;i

134注意:部分源程序已存在考生文件夹的文件simp.cpp中.请勿修改主函数其他函数中的任何内交,何在由独RnrlMれ衽W•中靖£若ギ灌匂.#includeintfind(chars[],chart[]);constintMAXLINE=256;intmain(){charsource[MAXLINE],target[MAXLINE];cout«MPleaseinputastringforsearching:

135”;cin.getline(source,MAXLINE);cout«MPleaseinputastringyouwanttofind:

136M;cin.getline(target,MAXLINE);intintPos=find(source,target);if(intPos>=0)cout«"Findingit,Thetargetstringisatindex«intPos«Hofthesourcestring

137M;elsecout«"Notfindingit

138";return0;)intfind(chars[],chart[])(inti=0,j=0;for(i=0;s[i]!='\0';i++){if(t[O]==s[i]){while(t[j]!='\0,&&s[i+j]!='\0'){j++;if(t[j]!=s[i+jDbreak;}}if(tU]=='\O')returni;1return-1;)找到ー个字符串必须第一个字符相同且其余字符相同。耍想输出必须returnclassC1(public:operatorC0()Icout«"C1C0"«endl;/********found********/return1;使用VC6打开考生文件夹下的源程序文件sunpcpp・阅读下列函数说明和代码,补充空出的代码・函数fun(chai*str.chax*del)实现将str中的ー些字母删除,这些字母出现在指针del1旨向的字符串中.#includevoidfun(char*str,char*del)intk=0;boolisDelete=false;for(inti=O;str[i]!=O;i++)(for(intj=O;del[j]!=O;j++){if(str[i]==delO])(isDelete=true;break;))if(isDelete==false)

139{str[k++]=str[i];)else{isDelete=false;))str[k]=0;)默认为falsevoidmain()(charstr[1024];char*del="ade";cout«npleaseinputastring:n«endl;cin.getline(str,1024);fun(str,del);cout«str«endl;return;)综合应用fractionoperator-()const{returnfraction(-number,den);}〃ー……3……**fractionoperator+(fraction&obj)constreturnfraction(number*obj.den+den*obj.number,den*obj.den);)求最大公约数:longfraction::gcd(longmlJongm2)(〃********4********while(m2){longm=ml;ml=m2;m2=m%m2;}returnIabs(m1);)第砌::fp««endl;应改%fp«objl+(-obj2)调用求负运算vve面,使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,补充空出的代码・函数fuMNode*headl.Node*head2)将捱表head2链接在headl的后面・注意:部分代码已经实现,请勿改动3)函数代码.

140使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,补充空出的代码.函数fiirQitA〇,intten,unsignedintdata)用于把所有输入数据dat济助口,放到A口表示的整数中,直到输入负数时结束输入.A。表示整数的方法是:下标为〇表示个位,A口表示整数的方法是:下标为。表示个位,下标为1表示十位,依此类推.例如:输入:12则皿)返回2,AQ中存储1,2再次输入:134则fW)返回3,A0中存储1,4,6输入T•程序输出146注意:部分代码已经实现,淸勿改动main()函数代码.#include#defineMAX_LEN100intA[MAX_LEN]={0};intfun(intA[]Jntten,unsignedintdata)(inti=0;while(data!=0)Afi]+=data%10;data/=10;1++;)intj;for(j=0;j

141for(inti=len-1;i>=0;i-)cout«A[i];cout«endl;return;}点评:此题要求先将数转化为数组,在数组上实现数的相加,然后再还原为数。使用VC6打开考生文件夹下的源程序文件advacpp.MyStack模板是实现堆栈的操作,其中定义的类并不完整,按要求完成下列操作,格类的定义补充完整.程序输出:01234567899876543210(1)完成堆栈的构造函数,使得完成成员变量初始化,并且申淸数据存储的空间,淸在注释〃*******つ********后添加适当的语句.(2)完成析构函数实现对象数据空间的释放,淸在注释〃********2********后添加适当的语句.(3)完成PushQ抉少的语句,请在注释〃********3********后添加适当的语句.(4)完成Pop()缺少的语句,请在注释〃********4*后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#includeusingnamespacestd;templateclassMyStackintcount;intmaxdata;T*elem;public:〃****★*★*〔********MyStack(intmax):count(0),maxdata(max),elem(newT[max])构造函数初始化定义的所有变量,注意指针初始化。()~MyStack()I〃********つ********delete[]elem;}boolisFull()const{returncount==maxdata;}boolisEmpty()const{returncount==0;}boolpush(constT&data)(if(isFull())returnfalse;〃・m*c********elem[count++]=data;push作用是将变量赋给数组ド一位returntrue;)boolpop(T&data)(if(isEmpty())returnfalse;

142〃********4********data=elem[-count];pop作用是将数组上一位赋チ变量returntrue;}constT&topData(){returnelem[count-1];}};voidmain()(MyStackst(10);inti=0;while(!st.isFull())(st.push(i++);cout«st.topData()«*';}cout«endl;intdata;while(!st.isEmpty())st.pop(data);cout«data«*}cout«endl;)使用VC6打开考生文件夹下的源程序文件sunp.cpp.阅读下列函数说明和代码,补充空出的代码.函数A口,intlenA,intBロ,intlenB)实现两个超大数:的相加.数据的存储方式是:下标为O表示个位,下标为1表示十位,依此类推•lenA和lenB表示当前的位数.返回相加之和的数据的位数.例如:A中存储1234567B中存储2344132则相加之和为3578699,返回7当再次输入一个字符串时,输入q则退出程序.注意:部分代码已经实现,请勿改动man©函数代码.#include#include#defineMAX_LEN100intA[MAX_LEN]={0};intfun(intA[],intlenAJntB[],intlenB)(inti;intlenMax=(lenA>lenB)?lenA:lenB;找到A,B中最大位数的位数for(i=0;i

143A[i+1]+=A[i]/10;A[i]%=10;}if(A[lenMax+1]!=0)返冋相加结果的位数returnlenMax+1;returnlenMax;)voidmain()(intlenA=1;do{chardata[MAX_LEN];cout«"pleaseinputanumberstring:H«endl;cin.getline(data,MAX_LEN);if(data[0]<'0'||data[O]>'9')break;intlenB=0;intB[MAX_LEN]={0};for(inti=strlen(data)-1;i>=0;i-)if(data[0]>=,0,&&data[O]<=9)B[lenB++]=data[i]ヤ;elsebreak;)lenA=fun(A,lenA,B,strlen(data));}while(1);for(inti=lenA-1;i>=0;i-)cout«A[i];cout«endl;return;使用VC6打开考生文件夹下的源程序文件advacpp•撲MyCopy实现了文件的拷贝,其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.(1)完成构造函数的定义,第一个参数filel缺省为NULL,是源输入文件,第二个参数file2缺省为NULL,是目标拷贝文件,淸在注释〃********1*******1•・后添加适当的语句.(2)完成输入输出流之间的拷贝,淸在注释〃********2********后添加适当的语句.(3)完成指定输出流,默认输入流为源文件的拷贝,淸在注释〃3********后添加适当的语句.(4)完成把内容拷贝到屏幕上,请在注释〃********4********后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来.淸不要修改其他的程序代码.#include#include#includeusingnamespacestd;#defineMAX_PATH260classMyCopy{private:charfile1[MAX_PATH];charfile2[MAX_PATH];public:********

144MyCopy(char*file1=NULL,char*file2=NULL)注意使用指针{if(filel)sets(filel);if(file2)setd(file2);)voidsets(char*filel){strcpy(this->file1,filel);}voidsetd(char*file2){strcpy(this->file2,file2);}voidtocopy(){ifstreamfp1;fpl.open(filel);ofstreamfp2;fp2.open(file2);tocopy(fp1,fp2);fp1.close();fp2.close();)voidtocopy(istream&fp1,ostream&fp2)(〃********G********while(!fp1.eof()){charc;fp1»c;fp2«c;}将f1中字符提取出,输入到f2中)voidtocopy(ostream&fp2)(ifstreamfp1;fp1.open(file1);〃********ク********tocopy(fp1,fp2);调用前面构造的函数fp1.close();}};voidmain()(MyCopycopy;copy.sets("in.txt");copy.setd("out.txtn);copy.tocopy();I/*★**★★**4********copy.tocopy(cout);拷贝到屏幕意味着ostream&fp2中的p2为cout;使用VC6打开考生文件夹下的源程序文件simp.cpp.阅读下列函数说明和代码,补充空出的代码.函数:fun(FUN・中,intindex,double1,double。完成的功能是:根据索引!ndex调用相应的函数:并返回函数的值.参数说明:调用函数指针的给定的函数索引index(范围为0〜3),其函数的形参为i、j,分别为相应函数第一个和第二个参数.例如:index=1,1=10.4,j=5.2则函数返回5.2.当输入函数指针的时候,输入。〜3外的其他数,则退出程序.注意:部分代码已经实现,请勿改动mainO函数代码.#includetypedefdouble(*FUN)(double,double);doublefun(FUN*fp,intindex,doublei,doublej)returnfp[index](i,j);)doubleAdd(doublei,doublej)(returni+j;)doubleDec(doublei,doublej)(returni-j;}doubleMul(doublei,doublej)(returni*j;)doublePower(doublei,doublej)(doubleresult=1;for(doublek=O;k

145(result*=i;)returnresult;)voidmain()(FUNfp[4];fp[O]=Add;fp[1]=Dec;fp[2]=Mui;fp[3]=Power;do{cout«Hlnput[0]=Add',«endl;cout«Hlnput[1]=DecM«endl;cout«Mlnput[2]=MulM«endl;cout«Mlnput[3]=PowerM«endl;cout«HlnputotherQUITM«endl;intnumber;cout«Hpleaseinputfun:"«endl;cin»number;if(number>3||number<0)(cout«NQuit";return;)doublei,j;cout«Mpleaseinputtwonumber:M«endl;cin»i»j;cout«Hresult=M«fun(fp,number,i,j)«endl«endl;}while(1);return;)未能理解题意。使用VC6打开考生文件夹下的源程序文件advacpp.类CMyClass打开两个流,把输入流中的内容输出到输出流中,其中定义的类并不完整,捜要求完成下列操作,格类的定义补充完整.(1)CMyClass的构造函数,两个参数为输入文件名指针和输出文件名指针,默认为空,完成这个构造函数,并且初始化夷的成员变量,请在注释〃********1********后添加适当的语句.(2)完成。L的。屈531163111*111,0511€8111*0朮=!玳^し!()对成员变量的赋值,请在注程〃********2********后添加适当的语句.(3)完成析构函数,当操作文件流时删除申请的空间,请在注释〃*3**后添加适当的语句.(4)完成流的读取字符和把字符输出到输出流中,请在注释〃*4・后添加适当的语句.注意,噌加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#include

146#includeusingnamespacestd;classCMyClass(private:istream*in;ostream*out;boolisAutoDel_IN;boolisAutoDel_OUT;public:********CMyClass(char*s=NULL,char*d=NULL):in(NULL),out(NULL)未知量s,d用处不清,in,〇ut未能正确赋初值(isAutoDel_IN=false;isAutoDel_OUT=false;if(s){ifstream*fp=newifstream;fp->open(s);in=fp;isAutoDel_IN=true;}if(d){ofstream*fp=newofstream;fp->open(d);out=fp;isAutoDel_OUT=true;))CMyClass(istream*in,ostream*out=NULL){yy********2********this->in=in;this->out=out;使用this指针赋值isAutoDeIJN=false;isAutoDel_OUT=false;)〜CMyClass(){y/********2********if(in!=NULL&&isAutoDel_IN)deletein;有条件的deleteif(out!=NULL&&isAutoDel_OUT)deleteout;)voidshow()(while(!in->eof()){charc;〃********4********(*in)»c;(*out)«c;使用指针虚实结合)voidmain()(CMyClassobj1("in.txt7out.txt");obj1.show();ifstreamfp;fp.open(Hin.txtM);CMyClassobj2(&fp,&cout);obj2.show();

147fp.close();}98套第2处:Cl(inta)应改ECl(mta):C0(a)使用VC6打开考生文件夹下的源程序文件adva.cpp.程序通过交互实现人员与生日的输入,其中定义的美并不完整,按要求完成下列操作,格类的定义补充完整.输入文件见iadat.(1)完成readQ函数中缺少的部分,使得读取文件中的每ー个人的数据,请在注释〃********]********后•力ロ漣^^的句(2)完成save()函数中缺少的部4,使得保存每ー个人的信息到文件中,请在注释〃********〇********后添カ口适幺的语句.(3)从界面上输入ー个用户的信義,増加到数组中,请在注释〃********3********后添加适当的语句.(4)通过save()函数把信息输出到界面,请在注释〃********4********后添加适当的语句.注意:增加代码,或者修改代码的位置已经用符号表示出来.请不要修改其他的程序代码.#include#includeusingnamespacestd;structPerson(charname[32];intyear;intmonth;intday;friendistream&operator»(istream&in,Person&t){charc;in»t.name»t.year»c»t.month»c»t.day;returnin;)friendostream&operator«(ostream&out,Person&t){out«t.name«,\t,«t.year«'.,«t.month«'.,«t.day«endl;returnout;)operator=(Person&t){strcpy(name,t.name);year=t.year;month=t.month;day=t.day;)};classCSavePerson{private:Personperson[256];intcounter;

148public:voidread(char*str){counter=0;ifstreamfp;fp.open(str);while(!fp.eof())(〃********〔********fp»person[counter++];读入)fp.close();)voidsave(char*str){ofstreamfp;fp.open(str);inti=0;while(i

149switch(t)case0:return;case1:{Persont;coutvv"请输入信息"vvendl;cin»t;obj.Add(t);}break;case2:{charfile[32];cout«"pleaseinputfilenametosave:cin»file;obj.save(file);}break;case3:{charfile[32];cout«"pleaseinputfilenametoread:";cin»file;obj.read(file);}break;case4:{〃********4*****★★*obj.save(wCON");}break;default:cout«"selecterror!"«endl;break;}while(1);)使用VC6打开考生文件夹下的源程序文件adva.cpp.程序通过交互实现人员与生日的输入,其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整.输入文件见indat.(1)判断生日的大小,如:1943年10月11日大于1945年9月15日的人,淸在注程〃********]********后力口^^当的ヨ^句(2)完成重载运算符,羲为输入文件名,请在注释〃2后添加适当的语句.(3)完成重载运图符“〉〉”,参数为输出文件名,请在注程//***3***后添加适当的语句.(4)完成人员的出生由小到大的排序,请在注释〃********4********后添加适当的语句.注意:増加代码,或者修改代码的位置已经用符号表示出来.淸不要修改其他的程序代码.#include#includeusingnamespacestd;classPerson:{港マ即目ホ爲诋!Aep)+t£.(Miuoiui+z\.jbsAi)>Aep+t£.(qiuouj+z\..jbsA)ujnjej♦♦♦♦♦♦♦♦L*****¥**〃)(1^uosjaj)

150I(aujEuraiueu)Adojjs)(12110s」ad)=」oie」ado(tjnoujn)ajI|pua»AEpi»l4»qiuoiui»,,»JEaAi»j\l»aujEU3»ino)(l^uosjaj^no^iueajjso)»jojejado^uiEajjsopuauj(!uiujn)aj^AEp4«qiU0LU3«JEaAi«aiuEU3«U!}(1guosiaju!^lue8jjs!)«jo|Ejado^lUEdJisipuau|(:0=Aep:0=Miuoiu:0=JEdA!0=[o]aiuEu)()uosjaj:oi|qnd:Aepiuitqiuoiu}ui:」EaAiui:に©]aujEujEqo:ajEAud}classCSavePersonprivate:Personperson[256];intcounter;public:CSavePerson():counter(O)()/***2********operator«(char*str)注意char*str{counter=0;ifstreamfp;fp.open(str);while(!fp.eof())(fp»person[counter++];}fp.close();}〃*m*c*m*operator»(char*str)(ofstreamfp;

151fp.open(str);inti=0;while(iperson[j+1])(Persont=person[j];person[j]=person[j+1];person[j+1]=t;}))};voidmain(){CSavePersonobj;do{cout«endl;cout«"H«endl;cout«"0=quit"«endl;cout«M1=addpersonn«endl;

152cout«"2=deletepersonH«endl;cout«"3=savetofile"«endl;cout«"4=readfile"vvendl;cout«"5=showpersontoscreen"«endl;cout«"6=sortpersonbybirthdayH«endl;cout«"cout«"pleaseselectanumbe匚intt;cin»t;switch(t)("«endI;case0:return;case1:{Persont;coutvv”请输入信息”vvendl;cin»t;obj+=(t);}break;case2:(charstr[32];coutvv”请输入名字"vvendl;cin»str;obj-=(str);}case3:{charfile[32];cout«"pleaseinputfilenametosave:";cin»file;obj»(file);}break;case4:(charfile[32];cout«"pleaseinputfilenametoread:";cin»file;obj«(file);)break;case5:obj»("CON");break;case6:

153obj.sort();break;default:cout«"selecterror!"«endl;break;}}while(1);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭