1、【第 1 页 共 48 页】C+面向对象程序设计上机考试题库一、第一类题目(20 道,每题 7 分,在 word 中保留代码并将输出结果窗口保留)1定义盒子 Box 类,要求具有以下成员:长、宽、高分别为 x,y,z,可设置盒子形状;可计算盒子体积;可计算盒子的表面积。#includeclass Box private:int x,y,z; int v,s;public:void int(int x1=0,int y1=0,int z1=0) x=x1;y=y1;z=z1;void volue() v=x*y*z;void area() s=2*(x*y+x*z+y*z);void show(
2、)coutusing namespace std;class Boxpublic:Box(int,int,int);/带参数的构造函数int volume();private:int length;int width;int height;Box:Box(int len,int h,int w)length=len;height=h;width=w; 【第 2 页 共 48 页】/Box:Box(int len,int w,int,h):length(len),height(h),width(w)int Box:volume()return(length*width*height); int
3、main()Box box1(30,20,10);coutusing namespace std;class Boxpublic:Box(); Box(int len,int w ,int h):length(len),width(w),height(h)int volume();private:int length;int width;int height;int Box:volume()return(length*width*height);int main()Box box1(10,20,25); coutusing namespace std;template/声明一个类模板class
4、 Comparepublic:Compare(numtype a,numtype b)x=a;y=b;numtype max()return (xy)?x:y;numtype min()return (x cmp1(3,7);cout cmp2(45.78,93.6);cout cmp3(a,A);coutusing namespace std;class Studentpublic:Student(int n,double s):num(n),score(s)void display();private:int num;double score;void Student:display()c
5、outdisplay();return 0;6建立一个对象数组,内放 5 个学生的数据(学号、成绩),设立一个函数 max,用指向对象的指针作函数参数,在 max 函数中找出 5 个学生中成绩最高者,并输出其学号。初值自拟。#include using namespace std;class Studentpublic:Student(int n,float s):num(n),score(s)int num;float score;void main()Student stud5=Student(101,78.5),Student(102,85.5),Student(103,98.5),St
6、udent(104,100.0),Student(105,95.5);void max(Student* );Student *p=max(p);void max(Student *arr)float max_score=arr0.score;int k=0;for(int i=1;imax_score) max_score=arri.score;k=i;cout#includeusing namespace std;void main()int *p;p=new int10;for(int i=1;iusing namespace std;class Complexpublic:Comple
7、x()real=0;imag=0;Complex(double r,double i)real=r;imag=i;double get_real();double get_imag();void display();private:double real;double imag;double Complex:get_real()return real;double Complex:get_imag()return imag;void Complex:display()coutusing namespace std;class Complexpublic:【第 7 页 共 48 页】Comple
8、x()real=0;imag=0;Complex(double r,double i)real=r;imag=i;Complex operator*(Complex Complex operator/(Complex void display();private:double real;double imag;Complex Complex:operator*(Complex c.real=real*c2.real-imag*c2.imag;c.imag=imag*c2.real+real*c2.imag;return c;Complex Complex:operator/(Complex c
9、.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return c;void Complex:display()cout class Complexpublic:Complex()real=0;imag=0;Complex(double r,double i)real=r;imag=i;Complex operator+(Complex Complex operator+(
10、int 【第 8 页 共 48 页】friend Complex operator+(intvoid display();private:double real;double imag;Complex Complex:operator+(Complex Complex Complex:operator+(int void Complex:display()coutclass Matrix public:Matrix(); friend Matrix operator+(Matrix void input(); void display(); private:int mat23;【第 9 页 共
11、 48 页】Matrix:Matrix() for(int i=0;imatij;void Matrix:display() for (int i=0;iclass Complexpublic:Complex()real=0;imag=0;【第 10 页 共 48 页】Complex(double r)real=r;imag=0;Complex(double r,double i)real=r;imag=i;friend Complex operator+ (Complex void display();private:double real;double imag;Complex opera
12、tor+ (Complex void Complex:display()cout#include class Stringpublic:String()p=NULL;String(char *str);friend bool operator=(String void display();private:char *p;String:String(char *str)p=str;void String:display()cout#include class Stringpublic:String()p=NULL;String(char *str);friend bool operator“,用
13、于两个字符串的大于的比较运算。初值自拟。#include #include class Stringpublic:String()p=NULL;String(char *str);friend bool operator(String void display();private:char *p;String:String(char *str)p=str;void String:display()cout(String elsereturn false;void compare(String cout“;string2.display();coutclass CStuScore public:
14、char strName12;char strStuNO9;void SetScore( char sname12, char NO9,float s0, float s1, float s2) strcpy(strName, sname);strcpy(strStuNO, NO); fScore0 = s0;fScore1 = s1; fScore2 = s2; void print() coutName;【第 14 页 共 48 页】coutStuNO;coutabc;one.SetScore(Name,StuNO,a,b,c);one.print();cout”,使之能够用于输出以上类对
15、象。#include class Pointpublic:Point(float=0,float=0);void setPoint(float,float);float getX() const return x;float getY() const return y;friend ostream class Shapepublic:virtual double area() const =0; ;class Circle:public Shapepublic:Circle(double r):radius(r) virtual double area() const return 3.141
16、59*radius*radius; protected:double radius; ;class Rectangle:public Shapepublic:Rectangle(double w,double h):width(w),height(h) virtual double area() const return width*height; protected:double width,height; ;【第 17 页 共 48 页】class Trapezoid:public Shapepublic:Trapezoid(double w,double h,double len):wi
17、dth(w),height(h),length(len) virtual double area() const return 0.5*height*(width+length); protected:double width,height,length; ;void printArea(const Shape strncpy(pName, name, n); pNamen = 0;n = strlen(id);strncpy(pID, id, n);pIDn = 0;bMan = isman;void Output()coutusing namespace std;class Goods p
18、ublic :Goods ( int w) weight = w; totalWeight += w ; ; Goods ( ) totalWeight -= weight ; ; int Weight ( ) return weight ; ;static int TotalWeight ( ) return totalWeight ; ;private : int weight ;static int totalWeight ; ;int Goods : totalWeight = 0 ;main ( ) int w ;cin w ; Goods *g1 = new Goods( w )
19、;cin w ; Goods *g2 = new Goods( w ) ;cout using namespace std;class Date;class Timepublic:Time(int,int,int);void display(const Dateprivate:【第 20 页 共 48 页】int hour;int minute;int sec;Time:Time(int h,int m,int s)hour=h;minute=m;sec=s;class Datepublic:Date(int,int,int);friend void Time:display(const Da
20、te private:int month;int day;int year;Date:Date(int m,int d,int y)month=m;day=d;year=y;void Time:display(const Date class Date;class Timepublic:Time(int,int,int);friend void display(const Date private:int hour;int minute;int sec;Time:Time(int h,int m,int s)hour=h;minute=m;sec=s;class Datepublic:Date
21、(int,int,int);friend void display(const Date private:int month;int day;int year;Date:Date(int m,int d,int y)month=m;day=d;year=y;void display(const Date class Point public :Point ( double xi , double yi ) X = xi ; Y = yi ; double GetX( ) return X ; double GetY( ) return Y ; private : double X , Y ;
22、;class Distancepublic :Distance(Point p,Point q);double Getdist() return dist;private:Point a,b;double dist;Distance:Distance(Point q1,Point q2):a(q1),b(q2) double dx=double(a.GetX()-b.GetX();double dy=double(a.GetY()-b.GetY();dist=sqrt(dx*dx+dy*dy);int main ( ) Point p1 ( 3.0 , 5.0 ) , p2 ( 4.0 , 6
23、.0 ) ;Distance dis(p1,p2);cout #includeusing namespace std;class Point public :【第 23 页 共 48 页】Point ( double xi , double yi ) X = xi ; Y = yi ; double GetX( ) return X ; double GetY( ) return Y ; friend double Distance ( Point private : double X , Y ; ;double Distance ( Point double dy = a.Y - b.Y ;
24、return sqrt( dx * dx + dy * dy ) ;int main ( ) Point p1 ( 3.0 , 5.0 ) , p2 ( 4.0 , 6.0 ) ;double d = Distance ( p1 , p2 ) ;cout using namespace std;templateclass Doublepublic:Double(numtype a)x=a;numtype bei()return 2*x;private:numtype x;int main()Doubledou1(3);coutdou2(12.36);coutdou3(25.33333);cou
25、tusing namespace std;class Timepublic:【第 24 页 共 48 页】Time()minute=0;sec=0;Time(int m,int s):minute(m),sec(s)Time operator+();void display()cout=60)sec-=60;+minute;return *this;int main()Time time1(34,0);for (int i=0;i#include using namespace std;class Teacher public: Teacher(string nam,int a,string
26、t) name=nam;age=a;title=t;void display() cout#include using namespace std;class Person public:Person(char *nam,char s,int a) strcpy(name,nam);sex=s;age=a;protected: char name20;char sex;int age;class Teacher:virtual public Person public: Teacher(char *nam,char s,int a,char *t):Person(nam,s,a) strcpy
27、(title,t); protected: char title10; ;class Student:virtual public Person public:Student(char *nam,char s,int a,float sco): StudentTeacherGraduatePerson【第 27 页 共 48 页】Person(nam,s,a),score(sco) protected: float score; ;class Graduate:public Teacher,public Student public:Graduate(char *nam,char s,int
28、a,char *t,float sco,float w): Person(nam,s,a),Teacher(nam,s,a,t),Student(nam,s,a,sco),wage(w) void show( ) coutusing namespace std;class Shapepublic:virtual double area() const =0; /纯虚函数 ;class Circle:public Shapepublic:Circle(double r):radius(r) virtual double area() const return 3.14159*radius*rad
29、ius; protected:double radius; ;【第 28 页 共 48 页】class Rectangle:public Shapepublic:Rectangle(double w,double h):width(w),height(h) virtual double area() const return width*height; protected:double width,height; ;class Trapezoid:public Shapepublic:Trapezoid(double w,double h,double len):width(w),height
30、(h),length(len) virtual double area() const return 0.5*height*(width+length); protected:double width,height,length; ;void printArea(const Shape class Shapepublic:Shape()Shape()virtual float GetPerim()=0;virtual float GetArea()=0;【第 29 页 共 48 页】class Rectangle:public Shapepublic:Rectangle(float i,flo
31、at j):L(i),W(j)Rectangle()float GetPerim()return 2*(L+W);float GetArea()return L*W;private:float L,W;class Circle:public Shapepublic:Circle(float r):R(r)float GetPerim()return 3.14*2*R;float GetArea()return 3.14*R*R;private:float R;void main()Shape * sp;sp=new Circle(10);coutGetPerim ()GetArea()GetP
32、erim()GetArea()class complexprivate:double real;double imag;public:complex(double r=0.0,double i=0.0) real=r; imag=i ;friend complex operator - (complex c1,complex c2);void display();complex operator - (complex c1,complex c2)return complex( c1.real-c2.real,c1.imag-c2.imag );void complex:display()cou
33、tclass complexprivate:double real;double imag;public:complex(double r=0.0,double i=0.0) real=r; imag=i ;friend complex operator + (complex c1,complex c2);void display();complex operator + (complex c1,complex c2)return complex(c1.real+c2.real,c1.imag+c2.imag );void complex:display()cout“(“real“,“imag“i)“endl;void main()complex c1(5,4),c2(2,10),c3,;cout“cl=“;c1.display();cout“c2=“;