C++面向对象程序设计习题集

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

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

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

资源描述

C++面向对象程序设计习题集编程题:用面向对象的程序设计方法编制如下程序。1.设计一个Bank类,实现银行某账号的资金往来账管理,包括建账号、存入、取出等。Bank类包括私有数据成员top(当前指针)、date(日期)、money(金额)、rest(余额)和sum(累计余额)。另有一个构造函数和3个成员函数bankinO(处理存入账)、bankout()(处理取出账)和disp()(出明细账)。【知识点】:2.22.3【参考分】:25分【难易度】:B【答案】:#includeiostream.h#includeiomanip.h#includestring.hconstintMax=100;classBank{inttop;chardate[Max][10];//日期intmoney[Max];//金额intrest[Max];//余额staticintsum;//累计余额public:Bank(){top=0;}voidbankin(chard[],intm){strcpy(date[top],d);money[top]=m;sum=sum+m;rest[top]=sum;top++;}voidbankout(chard[],intm){strcpy(date[top],d);money[top]=-m;//取出数用负数表示sum=sum-m;rest[top]=sum;top++;}voiddisp(){inti;cout日期存入取出余额endl;for(i=0;itop;i++){coutsetw(10)date[i];if(money[i]0)coutsetw(6)-money[i];elsecoutsetw(6)money[i];coutsetw(6)rest[i]endl;};intBank::sum=0;voidmain(){Bankobj;obj.bankin(2005.2.5.1000);obj.bankin(2006.3.2,2000);obj.bankout(2007.4.1,500);obj.bankout(2007.10.5,800);obj.disp();}2.编写一个程序,已有若干个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。【知识点】:2.22.3【参考分】:20分【难易度】:B【答案】:#includeiostream.h#includeiomanip.h#includestring.hclassStud{intno;charname[10];intdeg;staticintsum;staticintnum;public:Stud(intn,charna[],intd){no=n;deg=d;strcpy(name,na);sum+=d;num++;}staticdoubleavg(){returnsum/num;}voiddisp(){coutsetw(5)nOsetw(8)namesetw(6)degendl;}};intStud::sum=0jintStud::num=O;voidmain(){Studs1(1,Li,89),s2(2,Chert,78),s3(3,zheng,94);cout:学号姓名成绩endl;s1.disp();s2.disp();s3.disp();cout平均分=Stud::avg()endl;}3.有10个单词存放在一维指针数组words中,编写一个程序,根据用户的输入找出所有与之从前向后匹配的单词和个数。【知识点】:2.2【参考分】:25分【难易度】:B【答案】:设计一个Word类,包含一个私有数据成员words、一个构造函数和一个公有成员函数lookup(),构造函数用于给words赋初值,lookup()用于找出所有与之从前向后匹配的单词和个数。程序如下:#includeiostream.h#includestring.hC1assWord{charwords[10][12];public:Word()//构造函数给words赋初值{strcpy(words[0],elapse);strcpy(words[1],elucidate);strcpy(words[2],elude);strcpy(words[3],embody);strcpy(words[4],embrace);strcpy(words[5],embroider);strcpy(words[6],emrtge);strcpy(words[7],emphasize);strcpy(words[8],empower);strcpy(words[9],emulate);}voidlookup(chars[]);};voidWord::lookup(chars[]){char*w;inti,j,n=0;//n记录相匹配的单词个数cout匹配的单词:endl;for(i=0;i10;i++)//一个单词一个单词地匹配{for(w=words[i],j=0;s[j]!='\0'&&*w!='\0'&&*w==s[j];j++,w++);if(s[j]=='\0')//匹配成功{n++;cout\twords[i]endl;}}cout相匹配的单词个数:nendl;}voidmain(){Wordobj;charstr[20];cout输入单词:;cinstr;obj.lookup(str);}4.创建一个Employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、changenameO、display()的函数原型放在类定义中,构造函数初始化每个成员,display()~数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。【知识点】:2.22.33.1【参考分】:20分【难易度】:B【答案】:#includeiostream.h#includestring.hclassEmployee{protected:charname[10];//姓名charstreet[20];//街道地址charcity[10];//市charprov[10];//省charpost[7];//邮政编码intno;//记录序号public:Employee(char[],char[],char[],char[],char[],int);voidchangename(charstr[]);voiddisplay();};Employee::Employee(charn[],chars[],charc[],charpl[],charp2[],intnum){strcpy(name,n);strcpy(Street,s);strcpy(city,c);Strcpy(prov,p1);strcpy(post,p2);no=num;}voidEmployee::changename(charn[]){strcpy(name,n);}voidEmployee::display(){cout输出记录noendl;cout姓名:nameendl;cout街道地址:streetendl;cout市:cityendljtout省:provendl;cout邮政编码:postendl;}voidmain(){Employeeobj1(王华,中华路15号,武汉市,湖北省,430070,1);Employeeobj2(杨丽,天津路30号,南京市,江苏省,210020,2);obj1.display();obj2.display();}5.编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、语文成绩、数学成绩和英语成绩,求各门课程的平均分。要求设计不同的成员函数求各门课程的平均分,并使用成员函数指针调用它们。【知识点】:2.22.33.1【参考分】:20分【难易度】:C【答案】:设计一个学生类student,包括no(学号)、name(姓名)、degl(语文成绩)、deg2(数学成绩)、deg3(英语成绩)数据成员和3个静态数据成员suml(累计语文总分)、sum2(累计数学总分)、sum3(累计英语总分);另外有一个构造函数、3个求三门课程平均分的成员函数和一个disp()成员函数。程序如下:#includeiostream.h#includeiomanip.h#includestring.hconstintN=4;classstudent{intno;//学号charname[10];//姓名intdegl;//语文成绩intdeg2;//数学成绩intdeg3;//英语成绩staticintsuml;//语文总分statacintsum2;//数学总分staticintsum3;//英语总分public:student(intn,charna[],intdl,intd2,intd3){no=n;strcpy(name,na);degl=dl;deg2=d2;deg3=d3;suml+=degl;sum2+=deg2;sum3+=deg3;}doubleavgl(){return(suml*1.0)/N;}doubleavg2(){return(sum2*1.0)/N;}doubleavg3(){return(sum3*1.0)/N;}}voiddisp(){coutsetw(4)nosetw(10)namesetw(6)deglsetw(6)deg2setw(6)deg3endl;}};intstudent::suml=0;intstudent::sum2=0;intstudent::sum3=0;voidmain(){double(student::*fp)();//定义成员函数指针students1(1,Li,67,89,90);students2(2,Na,67,89,90);students3(3,Zheng,67,89,90);students4(4,Chert,67,89,90);cout输出结果endl;cout学号姓名语文数学英语endl;s1.disp();S2.disp();S3.disp();S4.disp();fp=student::avgl;cout语文平均分:(S1.*fP)()endl;fp=student::avg2;cout数学平均分:(S1.*fp)()endl;fp=student::avg3;cout英语平均分:(S1.*fP)()endl;}6.编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求只输出成绩在80~89分数段的学生数据。【知识点】:2.22.3【参考分】:20分【难易度】:B【答案】:设计一个学生类Stud,包括no(学号)、name(姓名)和deg(成绩)数据成员,另有两个普通成员函数setdata()和disp(),前者用于设置对象数据,后者用于只输出成绩在80~89分数段的学生数据。在main()函数中定义了一个对象数组用于存储输入的学生数据。程序如下:#includeiostream.h#includeiomanip.h#includestring.hconstintN=3;classStud{intno;charname[10];intdeg;publiC:voidsetdata(intn,charna[],intd){no=n;deg=d;strcpy(name,na);}voiddisp(){if(deg=80&°=89)coutsetw(5)nosetw(8)namesetw(

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

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

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

×
保存成功