C++6-11章课后作业参考答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第六章类和对象1.给出以下程序的执行结果题目见《C++语言程序设计》9.9—9.21(P212)和《C++程序设计教程》6.2-6.4(P115)答案:《C++语言程序设计》9.9运行结果:String9.10运行结果:n=6n=6n=69.11运行结果:n=10,k=3n=20,k=3n=30,k=39.13运行结果:n=2n=39.14运行结果:Constructor,i=0,Destructor9.15运行结果:Constructor1Constructor2i=0i=10DestructorDestructor9.16运行结果:AConstructorBConstructorValue=0BDestructorADestructor9.17运行结果:A=7,b=89.18运行结果:5679.19运行结果:Constructor1Constructor1Constructor1Constructor1DestructorConstructor2DestructorConstructor3Destructorx=0,y=0x=5,y=0x=2,y=3DestructorDestructorDestructor9.20运行结果:(1,2,3):count=2(2,3,4):count=29.21运行结果:A:ConstructorB:Constructorn=3m=2B:DestructorA:Destructor2.编写一个程序,输入若干个学生的英语和数学成绩,求出总分,并按总分从高到低排序,最后输出结果。#includeiostream#includestring#includeiomanipusingnamespacestd;classStudent{public:char*name;inteng,math,sum;Student();voidinscore();voiddisplay();~Student();};Student::Student(){name=newchar[10];}voidStudent::inscore(){cout姓名:;cinname;cout英语:;cineng;cout数学:;cinmath;sum=eng+math;}voidStudent::display(){coutsetw(10)namesetw(6)engsetw(6)mathsetw(10)sumendl;}Student::~Student(){delete[]name;}voidequal(Student&a,Student&b){strcpy(a.name,b.name);a.eng=b.eng;a.math=b.math;a.sum=b.sum;}voidsort(Student*p,intn){inti,j,exchange;Studenttmp;for(i=0;in-1;i++){exchange=0;for(j=n-2;j=i;j--)if(p[j+1].sump[j].sum){equal(tmp,p[j+1]);equal(p[j+1],p[j]);equal(p[j],tmp);exchange=1;}if(!exchange)break;}}voidmain(){intn,i;Student*p;cout请输入学生个数:;cinn;p=newStudent[n];for(i=0;in;i++)p[i].inscore();cout排序前:endl;for(i=0;in;i++)p[i].display();sort(p,n);cout排序后:endl;for(i=0;in;i++)p[i].display();system(pause);}3.设计一个立方体类Box,它能提供立方体的体积和表面积。#includeiostreamusingnamespacestd;classBox{floata;floatvolume;floatarea;public:Box(){}Box(floatr){a=r;}voidseta(floatr){a=r;}voidgetvolume(){volume=a*a*a;}voidgetarea(){area=6*a*a;}voiddisp(){cout体积:volume,表面积:areaendl;}};voidmain(){Boxobj1(5),obj2;obj2.seta(7);obj1.getarea();obj1.getvolume();coutobj1=;obj1.disp();obj2.getarea();obj2.getvolume();coutobj2=;obj2.disp();system(pause);}4.编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、语文成绩、数学成绩和英语成绩,求各门课程的平均分。要求设计不同的成员函数来求各门课程的平均分,并使用成员函数指针来调用它们。#includeiostream#includeiomanip#includestring#defineN3usingnamespacestd;classStudent{intno;charname[10];intchi;intmath;inteng;staticintsum1;staticintsum2;staticintsum3;public:Student(intn,charna[],intd1,intd2,intd3){no=n;strcpy(name,na);chi=d1;math=d2;eng=d3;sum1+=chi;sum2+=math;sum3+=eng;}doubleavg1(){return(sum1*1.0)/N;}doubleavg2(){return(sum2*1.0)/N;}doubleavg3(){return(sum3*1.0)/N;}voiddisp(){coutsetw(4)nosetw(10)namesetw(6)chisetw(6)mathsetw(6)engendl;}};intStudent::sum1=0;intStudent::sum2=0;intStudent::sum3=0;voidmain(){double(Student::*fp)();//定义成员函数指针,本部分没讲。该题可换成其它方法实现Students1(1,Li,89,77,98);Students2(2,Zhang,98,65,82);Students3(3,Mary,67,65,87);cout输出结果endl;s1.disp();s2.disp();s3.disp();fp=&Student::avg1;cout语文平均分:(s1.*fp)()endl;fp=&Student::avg2;cout语文平均分:(s1.*fp)()endl;fp=&Student::avg3;cout语文平均分:(s1.*fp)()endl;system(pause);}5.编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(PASS),而后30%的学生定义不及格(FAIL)。要求采用面向对象方法编程。#includeiostream#includeiomanip#includestring#defineN10usingnamespacestd;classStudent{charname[10];intdeg;public:voidsetname(charna[]){strcpy(name,na);}char*getname(){returnname;}voidsetdeg(intd){deg=d;}intgetdeg(){returndeg;}};classCompute{intn;Studentna[N];public:voidgetdata()//读入学生的信息{inti,tdeg;chartname[10];cout学生人数:;cinn;for(i=0;in;i++){cout第i+1个学生的姓名和成绩;cintnametdeg;na[i].setname(tname);na[i].setdeg(tdeg);}}voidsort()//对成绩进行排序{inti,j,pick;Studenttemp;for(i=0;in-1;i++){pick=i;for(j=i+1;jn;j++){if(na[j].getdeg()na[pick].getdeg())pick=j;}temp=na[i];na[i]=na[pick];na[pick]=temp;}}voiddisp(){intcutoff,i;cout输出结果endl;cout姓名成绩合格否endl;cout------------------endl;cutoff=n*7/10-1;for(i=0;in;i++){coutsetw(6)na[i].getname()setw(3)na[i].getdeg();if(i=cutoff)coutPASSendl;elsecoutFAILendl;}}};voidmain(){Computeobj;obj.getdata();obj.sort();obj.disp();system(pause);}第七章引用1.给出以下程序的执行结果题目见《C++语言程序设计》10.2—10.10(P232)和《C++程序设计教程》7.1-7.2(P130)《C++语言程序设计》10.2—10.10(P232):参考答案:10.2运行结果:n:10,rf:10n:15,rf:15n:23,rf:2310.3运行结果:n=15,rf=15&n=(n的地址),&rf=(rf的地址)n=10,m=20,rf=20&n=(n的地址),&m=(m的地址),&rf=(rf的地址)10.4运行结果:n=2d1=0d2=810.5运行结果:s1=25s2=6410.6运行结果:a=5y=10a=8y=1810.7运行结果:6310.8运行结果:0,810.9运行结果:1,210.10运行结果:x=1,y=2x=30,y=40《C++程序设计教程》7.1-7.2(P130):7.17.22.编写一个程序,通过执行结果分析在引用类对象时是否执行类的构造函数与析构函数。#includeiostream.hclassSample{intx,y;public:Sample(){cout执行类的构造函数!endl;}~Sample(){cout执行类的析构函数!endl;}};voidmain(){Samples;cout-----------------endl;Sample&b=s;}结果说明:没有执行类的构造函数与析构函数.3.编写一个程序,从键盘输入一些数字和字符,编程统计其中数字字符的个数和非数字字符的个数。#includeiostreamusingnamespacestd;voidfun(charch,int&n,int&c){if(ch='0'&&ch='9')n++;elsec++;}voidmain(){inttn=0,tc=0;charch;cout输入一个字符串;cinch;while(ch!='#')//字符串以#结束{fun(ch,tn,tc);cinch;}cout数字字符个数:tnendl;cout其它字符个数:tcendl;system(pause);}第八章友元1.给出以下程序的执行结果题目见《C++语言程序设计》11.2—

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功