最新C++程序设计习题.doc
《最新C++程序设计习题.doc》由会员分享,可在线阅读,更多相关《最新C++程序设计习题.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品资料C+程序设计习题.C+程序设计 练习题学院: 计算机学院 专业班级: 物联网1002 学号:0121010340705 姓名: 徐 远 志 第八章1.下面是一个类的测试程序,试设计出能是用如下测试程序的类.Int main() Test x;x.initx(30,20);x.printx();return 0;解:#include using namespace std;class Test /类的开始public:void initx(int i,int j);void printx();private:int x,y; void Test:initx(int i,int j)x=i
2、;y=j;void Test:printx()coutx*y=x*yendl; /类的结束int main() /测试函数Test x;x.initx(30,20);x.printx();return 0;得到的测试结果:4.定义并实现一个矩形类Crectangle。该类包含了下列成员函数。Crectangle(): 累的构造函数.根据需要可以定义多个构造函数SetTop(),SetLeft(): 设置矩形的左上角坐标SetLength(),SetWidth(): 设置矩形的长和宽Perimeter(): 求矩形的周长Area(): 求矩形的面积GetWidth(): 返回矩形的宽度Getle
3、ngth(): 返回矩形的长度IsSquare(): 判断矩形是否为正方形Move(): 将矩形从一个位置移动到另一个位置Size(): 改变矩形的大小Where(): 返回矩形的左上角的坐标PrintRectangle(): 输出矩形的四个顶点的坐标数据成员int top,left;int length,width;解:#include using namespace std;class Crectangle /类的开始int top,left;int length,width;public:Crectangle(int t=0,int l=0,int len=1,int w=1) top=
4、t;left=l; if (len0) length=len; else length=0;if (w0) width=w; else width=0;void SetTop(int t)top=t;void SetLeft(int l)left=l;void SetLength(int len)length=len;void SetWidth(int w)width=w;int Perimeter()return 2*(width+length);int Area()return width*length;int GetWidth()return width;int GetLength()r
5、eturn length;int IsSquare() if(width=length) cout该矩形是正方形endl;return 1;elsecout该矩形不是正方形endl;return 0;void Move(int x,int y) left+=x; top+=y;void Size(int l,int w) length=l; width=w; void PrintRectangle()cout左上方的点为:(left,top)endl;cout右上方的点为:(left+length,top)endl;cout左下方的点为:(left,top+width)endl;cout右下方
6、的点为:(left+length,top+width)endl; /类的结束int main()Crectangle a(1,1,5,5);a.PrintRectangle();a.SetTop(2); a.SetLeft(3);a.SetLength(4);a.SetWidth(5); a.IsSquare();cout周长为:a.Perimeter()endl;cout面积为:a.Area()endl;a.PrintRectangle(); cout用getwidth等函数得到的值为:endl;cout 长为:a.GetLengthendl;cout 宽为:a.GetWidthendl;r
7、eturn 0;得到的测试结果:6.某次歌手大赛中.有JudgeNum个评委给选手打分.参加比赛的选手有PlayerNum名.现为比赛积分编写一个CompetitionResult类.类的定义如下: (定义略)(1) 写出所有的成员函数和实现代码。(2) 编写main()函数对该类进行测试。在函数体中.定义了一个competitionResult类的对象数组rPlauerNum,他的每个元素记录了每个选手的所有信息.个评委的打分通过键盘的输入.在屏幕上应有提示信息进行交互式操作.比赛结果按选手得分从高到底排列输出。 解:(1)CompetitionResult:CompetitionResul
8、t()num=0; strcpy(name,);for(int i=0;iJudgeNum;i+) scorei=0.0;average=0;CompetitionResult:CompetitionResult(short n,char*ps)num=n;strcpy(name,ps);for(int i=0;iJudgeNum;i+) scorei=0.0;average=0;float CompetitionResult:MaxScore() int max=score0;for(int i=0;iJudgeNum;i+)if(maxscorei) max=scorei;return m
9、ax;float CompetitionResult:MinScore() int min=score0; for(int i=0;iscorei) min=scorei;return min;void CompetitionResult:SetAvg() int i;float sum=0.0; for(i=0;iJudgeNum;i+) sum+=scorei; sum=sum-MaxScore()-MinScore(); average=sum/(JudgeNum-2);float CompetitionResult:GetAvg() return average;short Compe
10、titionResult:GetNo(int i) return num;void CompetitionResult:SetNo(int i) num=i;char CompetitionResult:* GetName() return name ;float CompetitionResult:GetScore(int j) return scorej;void CompetitionResult:Setscore(int k,float av) scorek=av; void Sort(CompetitionResult *pr,int n) int i,j ,k; Competiti
11、onResult temp; for(i=0;in-1;i+) k=i; for(j=i+1;j(prk.average) k=j; if(k!=j) temp=pri; pri=prk; prk=temp; (2) int main()CompetitionResult playerPlayerNum=CompetitionResult(1,one),CompetitionResult(2,two),CompetitionResult(3,there),CompetitionResult(4,four),CompetitionResult(5,five),CompetitionResult(
12、6,six),CompetitionResult(7,seven),CompetitionResult(8,eight),CompetitionResult(9,nine),CompetitionResult(10,ten);float a;for(int i=0;iPlayerNum;i+)cout请评委给第i+1个选手打分:endl;for(int j=0;ja;playeri.Setscore(j,a);playeri.SetAvg();coutendl;Sort(player,PlayerNum);cout 最后的得分情况为: endl;for (int j=0;jPlayerNum;
13、j+)coutj+1 ;coutsetw(6)playerj.GetAvg();cout playerj.GetName()endl;return 0;程序运行的结果为:第九章1. 在下面的程序中.派生类Derived 的成员函数sets()能否访问基类base中得变量a和b?为什么?如果在基类base中将数据成员a和b定义为私有成员.下面的程序能否通过编译?为什么?#include using namespace std;class Base public:void set(int i,int j) a=i;b=j;void show() couta=a,b=bendl;protected:
14、int a,b;class Derived:public Base public:void sets() s=a*b;void shows() couts=sendl;private:int s;int main() Derived obj;obj.set(2,3);obj.show();obj.sets();obj.shows();return 0;解:可以访问a和b;因为a.b为保护成员.经公有继承.成为派生类中得保护成员.所以派生类Derived 的成员函数sets()能访问基类base中得变量a和b。如果定义为私有.则不能通过编译。因为派生类中的成员函数不能访问基类中得私有成员2声明一
15、个图形基类Shape.在它的基础上派生出矩形类Rectangle和圆形类Circle.它们都有计算面积的和周长、输出图形信息的成员函数.再在Rectangle类的基础上派生方形类Square。编写程序和各类的定义和实现.以及类的使用。解: #include using namespace std;class Shape public:double getArea()double getPerimeter() ;class Rectangle:public Shape protected:double height;double width;public:Rectangle() Rectangl
16、e(double a,double b)height=a;width=b;double getArea() return height*width;double getPerimeter() return 2*(height+width);class Circle:public Shapepublic:Circle(double x):r(x)double getPerimeter()return 2*3.1416*r;double getArea()return r*r*3.1416;private:double r;class Square:public Rectanglepublic:S
17、quare(double x)height=x;width=x;int main()Rectangle a1(2.2,3.2);Circle a2(4.2);Square a3(5.3);coutArea=a1.getArea()endl;coutPerimeter=a1.getPerimeter()endl;coutArea=a2.getArea()endl;coutPerimeter=a2.getPerimeter()endl;coutArea=a3.getArea()endl;coutPerimeter=a3.getPerimeter()endl;return 0;5.某销售公司有销售经
18、理和销售员工.月工资的计算办法为:销售激励的底薪为4000元.并将销售额的2/1000做提成.销售员工无底薪.只提取5/1000为工资。编写程序:(1) 定义一个积累Employee.它包含三个数据成员number.name和salary.以及编号和姓名的构造函数。(2) 有Employee类派生Salesman类。Salesman类包含两个新数据成员commrate和sales.还包括了用于输入销售额并计算销售员工工资的成员函数pay()和用于输出打印的print()。(3) 由Salesman派生Salemanager,Salesmmanage类包含新数据成员monthlypay.以及用于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 C+ 程序设计 习题
限制150内