[计算机软件及应用]面向对象复习.doc

上传人:音乐台 文档编号:1992133 上传时间:2019-01-29 格式:DOC 页数:41 大小:220.50KB
返回 下载 相关 举报
[计算机软件及应用]面向对象复习.doc_第1页
第1页 / 共41页
[计算机软件及应用]面向对象复习.doc_第2页
第2页 / 共41页
[计算机软件及应用]面向对象复习.doc_第3页
第3页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[计算机软件及应用]面向对象复习.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]面向对象复习.doc(41页珍藏版)》请在三一文库上搜索。

1、一、程序填空1、完成下面类的定义:#include #include class Person public:Person(char *nam) (1) ;/为name 申请内存空间 (2) ;/给name初始化coutConstructor calledendl; Person ( ) (3) ;/释放内存空间 coutDestructor calledendl; void show( ); private:char *name; ; void Person:show( ) coutnameendl;void main( )Person student1(Zhang ming); (4) .

2、show( );2、定义一个Point类,由它公有派生出矩形类Rectangle和圆类Circle,计算各派生类对象的面积。#include const double PI=3.14159;class Point protected: double x,double y; public: Point(double a,double b)x=a; (5) ;class Rectangle: (6) public: square(double a,double b): (7) void area();void Rectangle :area( ) coutthe area of Rectangle

3、 is: (8) endl;class Circle:public Pointpublic: Circle (double a,double b,double c): (9) r=c;void area(); private: double r;void Circle :area( ) coutthe area of Circle is: (10) endl;void main( ) Rectangle r(5.5,6.0);Circle c(0,0,5.0);r.area( ); c.area( ); 3、利用友元函数实现比较两个点离原点的距离。#include class Point pu

4、blic: Point(double xx,double yy) (11) ; (12) ; void Getxy( ); (13) int compare(Point &a, Point &b);private:double x,y; ; void (14) Getxy( ) cout(x,y)endl; int compare(Point &a, Point &b)/若a比b更近,则返回0,否则返回1 (15) ; double db=b.x*b.x+b.y*b.y; return (16) ; void main( ) Point p1(1.0,3.0),p2(2.0,4.0); cou

5、tp1 is:p1.Getxy( ); coutp2 is:p2.Getxy( ); int d= (17) ; if(!d) coutp1 is closer to origin!:endl; else coutp2 is closer to origin!:endl; 4、实现复数类的输入和输出重载。#include class Complexprivate: double real,imag;public: (18) ostream& operator(istream&,Complex&);ostream& operator(ostream& output,Complex& c)outp

6、ut(c.real+c.imag(istream& input,Complex& c)coutc.realc.imag; (20) ;void main()Complex c1,c2; cinc1c2; coutc1=c1endl; coutc2=c2endl;5、以下程序在M行N列的二维数组中,找出每一行上的最大值,显示最大值的行号、列号和值,请填空。#include void main( ) (1) ;int xMN=(1,5,6,4,2,7,4,3,8,2,3,1);for( (2) ;iM;i+) int t=0; for( (3) ;jN;j+) if( (4) ) (5) ; co

7、uti+1,t+1=xitendl;6、下列程序求两点之间的距离,请填空。#include #include class Point protected: double x,double y; public: Point(double a,double b) (6) ; double distance(Point &p);double Point : distance(Point &p) double dx= (7) ;double dy= (8) ;return sqrt(dx*dx+dy*dy);void main( ) Point p1(2,3),p2(5,6);cout (9) end

8、l; 7、定义一个关于日期的类,然后声明对象,判断该日期是否为闰年并输出。#include class TDate public: void SetDate(int y,int m,int d); int isLeapYear( ); void Print( ); (10) int year,month,day;void TDate:SetDate(int y,int m,int d) year=y; (11) ;day=d;int TDate:is LeapYear( ) return ( (12) )|(year%400=0);void TDate:Print()coutyear.mont

9、h.dayendl;void main( )TDate date1,date2; date1.SetDate(2006,8,8); date2.SetDate(2008,8,8); int leap= (13) ; date1.Print(); if( (14) )cout是闰年!endl; else cout不是闰年!endl; date2.Print( ); 8、将文件内容保存在另一文件中,并将内容显示到屏幕上。#include #include void main( ) fstream file1; file1.open(x1.dat, (15) ); if( (16) ) coutx.

10、dat不能打开!n; return ; fstream file2; file2.open(x2.dat,ios:out|ios:trunc); if( (17) ) coutx.dat不能创建n; file1.close( ); return; char ch; while( (18) ) file1.read(&ch,1); coutch (19) ; (20) ; file2.close( );9、下列程序的功能是对10个整数用选择法排序。 #include #define SIZE (sizeof(data)/(sizeof(data0)void main( )int datra =1

11、2,23,9,34,45,7,78,-33,59,3; int i,j,k,t; coutendl排序前:; for(i=0;iSIZE;i+) coutdatai ; for(i=0;iSIZE-1;i+) (1) ; for(j= (2) ;j= SIZE;j+)if(datajdatak) (3) ; t=datak;datak=datai;datai=t; coutendl排序后:; for(i=0;iSIZE;i+) coutdatai ;10、完成下面类的定义:#include #include class Person public:Person(char *nam) (4) ;

12、/为name 申请内存空间 (5) ;/给name初始化coutConstructor calledendl; Person ( ) (6) ;/释放内存空间 coutDestructor calledendl; void show( ); private:char *name; ; void Person:show( ) coutnameendl;void main( )Person student1(Zhang ming); (7) .show( );11、定义一个Point类,由它公有派生出矩形类Rectangle和圆类Circle,计算各派生类对象的面积。#include const

13、double PI=3.14159;class Point protected: double x;double y; public: Point(double a,double b)x=a; (8) ;class Rectangle: (9) public: square(double a,double b): (10) void area();void Rectangle :area( ) coutthe area of Rectangle is: (11) endl;class Circle:public: Circle (double a,double b,double c): (12

14、) r=c;void area(); private: double r;void Circle :area( ) coutthe area of Circle is: (13) endl;void main( ) Rectangle r(5.5,6.0);Circle c(0,0,5.0);r.area( ); c.area( ); 12、利用友元函数实现比较两个点离原点的距离。#include class Point public: Point(double xx,double yy) (14) ; (15) ; void Getxy( ); (16) int compare(Point

15、&a, Point &b);private:double x,y; ; void (17) Getxy( ) cout(x,y)endl; int compare(Point &a, Point &b)/若a比b更近,则返回0,否则返回1 (18) ; double db=b.x*b.x+b.y*b.y; return (19) ; void main( ) Point p1(1.0,3.0),p2(2.0,4.0); coutp1 is:p1.Getxy( ); coutp2 is:p2.Getxy( ); int d= (20) ; if(!d) coutp1 is closer to o

16、rigin!:endl; else coutp2 is closer to origin!:endl; 13、此程序的功能是求Fibonacci 数列前40个数,请填空。#include #include void main()long f1,f2;int i; (1) ; for(i=1;i=20;i+)coutsetw(12)f1setw(12)f2;if(i%2=0) coutendl; (2) ; (3) ; 14、此程序的功能是:构造一个类Box,含有3个数据成员,分别表示盒子的3条边长,还有一个成员函数,用来计算盒子的体积,请给程序填空。#include class Boxpriv

17、ate: double line,width,height;double volume;public:Box(double a, double b, double c);void vol( ); (4) (double a, double b, double c) line=a;width=b;height=c; (5) ; void Box:vol( ) coutVolume is : (6) endl; void main( ) Box x(3.4, 4.5, 8.3),y(2.0, 4.0, 6.0); x.vol( ); y.vol( ); 15、下列程序是有一个基类figure,派生

18、两个square和isosceles_triangle,让每一个派生类都定义一个函数area(),分别用来显示矩形与等腰三角形的面积,请给程序填空。请给程序填空。#include class figure public: double height, width;class square: (7) public: square(double h,double w); void area();class isosceles_triangle: (8) public: isosceles_triangle(double h,double w); void area();square:square(

19、double h,double w)height=h;width=w;void square:area()coutthe area of square is: (9) endl;isosceles_triangle:isosceles_triangle(double h,double w)height=h;width=w;void isosceles_triangle:area()coutthe area of isosceles_triangle is: (10) endl;void main() square s(10.0,6.0);isosceles_triangle i(8.0,6.0

20、);s.area();i.area(); 16、有一个向量Vector,包括一个点的坐标位置x和y,设计两个友元函数add() 和sub(),实现两个向量的加法和减法,请填空。#include class Vectorprivate: int x,y;public: Vector() Vector( (11) ) x=i;y=j; void disp() cout(x,y); (12) (Vector &v1,Vector &v2) Vector v; v.x=v1.x+v2.x; (13) ; return v; (14) (Vector &v1,Vector &v2) Vector v;

21、(15) ; v.y=v1.y-v2.y;return v; ;void main()Vector v1(10,20),v2(4,5),v3; v3=add(v1,v2); coutThe result is:endl; cout ; v1.disp();cout+;v2.disp();cout=;v3.disp();coutendl; v3=sub(v1,v2);cout ; v1.disp();cout-;v2.disp(); cout=;v3.disp();coutendl;17、下列程序对复数类Complex的减法进行运算符的重载,请填空。#include class Complexp

22、rivate: double real; double imag;public: Complex() (16) Complex(double r,double i) (17) friend Complex operator-(Complex &c1,Complex &c2); void display(); (18) (Complex &c1,Complex &c2) (19) ; c.real=c1.real-c2.real; c.imag=c1.imag-c2.imag; (20) ;18、下列程序求解矩形两条对角线的元素之和。#include void main( ) int i,j,s

23、um1,sum2; int a4=43,54,32,5,46,98,74,24,39,58,46,25,81,42,67,20; sum1=0; (1) ; for(i=0;i4;i+) for(j=0;j4;j+) if( (2) ) sum1+=aij; if( (3 ) sum2+=aij; coutsum1tsum2endl;19、完成下面类的定义:#include #include class Studentprivate:char *name; int num; float score; public: Student(char *,int,float); Student( );

24、void show( );Student:Student(char *nam,int n,float sco) (4) ;/为name 申请内存空间 (5) (name,nam);/给name初始化num=n;score=sco;Student:Student( ) (6) ;/释放内存空间20、已知有一个基类figure,要求建立两个继承figure的派生类square和isosceles_triangle,每一个派生类都定义一个函数area(),分别用来显示矩形与等腰三角形的面积。#include class figure public: double height;double widt

25、h;class square: (7) figure public: square(double h,double w); void area();class isosceles_triangle: (8) figurepublic: isosceles_triangle(double h,double w); void area();square:square(double h,double w) (9) void square:area()coutthe area of square is: (10) endl;isosceles_triangle:isosceles_triangle(d

26、ouble h,double w) (11) void isosceles_triangle:area()coutthe area of isosceles_triangle is: (12) endl;void main( )square s(10.0,6.0);isosceles_triangle i(8.0,6.0);s.area();i.area();21、下列程序定义了函数模板,实现了双精度和字符串各模板函数的调用。#include #include (13) T min(T a,T b) (14) char *min(char *a,char *b)return (15) void

27、 main( )double a=3.56,b=8.23;char s1=Hello,s2=Good;cout a,b中较小者:min(a,b)endl;cout s1,s2中较小者:min(s1,s2)endl;22、下列程序是把数据输出到文件c:new.dat 中,然后读出并显示出来。#include #include #define M 2#define N 2struct Person int no; char name20;void main( )int i;struct Person workerM=1,Jonh,2, Rose;fstream file;file.open(c:n

28、ew.dat, (16) );if( (17) )cout打开文件c:new.dat出错!n;exit(1);for(i=0;iM;i+) (18) file.close( );file.open(c:new.dat, (19) );for(i=0;iM;i+) file.read(char *)&workeri,sizeof(Person); coutnumber:workeri.notworkeri.nameendl; (20) 23、下列程序将100-200之间不能被3整除的数输出,每行输出5个数。#include void main( ) int i,count=0; for(i=10

29、0;i=200;i+) if( (1) ) continue; couti ; (2) ; if( (3) ) coutendl; 24、下面的类定义了拷贝构造函数,请完成该类的定义和实现。#include class MyClass public: MyClass(int xx=0,int yy=0)X=xx;Y=yy; (4) ; private: int X,Y;MyClass: (5) ; X= (6) ; Y=p.Y;25、定义一个点类Point,用构造函数初始化类Point的对象,成员函数Distance计算平面上两点之间的距离。#include (7) class Point p

30、rivate: double x; double y; (8) Point(double a,double b); void Distance(Point p);Point:Point(double a,double b) (9) void Point:Distance(Point p) double dis;dis= (10) ;cout平面上这两点间距离为:disendl;void main( )Point p1(2.0,2.0),p2(4.0,4.0);P1.Distance(p2);26、定义类coord,用模板实现此类对象的比较,比较时使用了运算符的重载。#include class

31、 coordprivate: int x,y;public: coord(int x1,int y1) (11) int getx()return x; int gety()return y; int operator(coord &c);int coord:operator(coord &c)if(xc.x) if(yc.y) return 1; (12) ; (13_) obj &min(obj &o1,obj &o2)if(o1o2) return o1; (14) ;void main() coord c1(5,11),c2(6,18); coord c3= (15) ; cout较小

32、者的坐标:(c3.getx(),c3.gety()endl; double d1=1.5,d2=5.6; cout较小实数:min(d1,d2)endl;27、下面程序用于统计文件abc.txt中的字符个数,请填空。#include (16) #include void main() fstream file; file.open(“abc.txt”,ios:in); if( (17) ) cout“abc.txt cannot open”endl;abort(); char ch; int i=0; while(!file.eof() (18) ; (19) ; (20) ;28、在下面程序段横线处填上适当的内容。classA _ intn; public: A(intnn=0):n(nn) if(n= =0) a=0; elsea=newintn; _ /定义析构函数,释放动态数组空间 ; 29、下面程序三次调用同一函数sum,在横线处填上适当内容,使输出结果为: S=2 S=5 S=9 程序如下: #include voidsum(inti) staticints; _; coutS=sendl;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1