C++面向对象程序设计上机考试题库 .pdf

上传人:C****o 文档编号:39895566 上传时间:2022-09-08 格式:PDF 页数:48 大小:279.41KB
返回 下载 相关 举报
C++面向对象程序设计上机考试题库 .pdf_第1页
第1页 / 共48页
C++面向对象程序设计上机考试题库 .pdf_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《C++面向对象程序设计上机考试题库 .pdf》由会员分享,可在线阅读,更多相关《C++面向对象程序设计上机考试题库 .pdf(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【第 1 页共 48 页】C+面向对象程序设计上机考试题库一、第一类题目(20道,每题 7 分,在 word 中保留代码并将输出结果窗口保留)1定义盒子 Box类,要求具有以下成员:长、宽、高分别为x,y,z,可设置盒子形状;可计算盒子体积;可计算盒子的表面积。#include class 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()coutx=

2、x y=y z=zendl;couts=s v=vendl;void main()Box a;a.init(2,3,4);a.volue();a.area();a.show();2有两个长方柱,其长、宽、高分别为:(1)30,20,10;(2)12,10,20。分别求他们的体积。编一个基于对象的程序,在类中用带参数的构造函数。#include using namespace std;class Box public:Box(int,int,int);/带参数的构造函数 int volume();private:int length;int width;int height;Box:Box(in

3、t len,int h,int w)length=len;height=h;width=w;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 48 页 -【第 2 页共 48 页】/Box:Box(int len,int w,int,h):length(len),height(h),width(w)int Box:volume()return(length*width*height);int main()Box box1(30,20,10);coutThe volume of box1 is box1.volume()endl;Box box2(12,10,20);coutThe

4、volume of box2 is box2.volume()endl;return 0;3有两个长方柱,其长、宽、高分别为:(1)12,20,25;(2)10,30,20。分别求他们的体积。编一个基于对象的程序,且定义两个构造函数,其中一个有参数,一个无参数。#include using namespace std;class Box public: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:v

5、olume()return(length*width*height);int main()Box box1(10,20,25);coutThe volume of box1 is box1.volume()endl;Box box2(10,30,20);coutThe volume of box2 is box2.volume()endl;return 0;4声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。#include 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 48 页 -【第 3 页共 48 页】using namespace std;te

6、mplate/声明一个类模板class Compare public:Compare(numtype a,numtype b)x=a;y=b;numtype max()return(xy)?x:y;numtype min()return(xy)?x:y;private:numtype x,y;int main()Compare cmp1(3,7);coutcmp1.max()is the Maximum of two inteder numbers.endl;coutcmp1.min()is the Minimum of two inteder numbers.endlendl;Compare

7、 cmp2(45.78,93.6);coutcmp2.max()is the Maximum of two float numbers.endl;coutcmp2.min()is the Minimum of two float numbers.endlendl;Compare cmp3(a,A);coutcmp3.max()is the Maximum of two characters.endl;coutcmp3.min()is the Minimum of two characters.endl;return 0;5建立一个对象数组,内放5 个学生的数据(学号、成绩),用指针指向数组首元

8、素,输出第 1,3,5 个学生的数据。初值自拟。#include using namespace std;class Student public:Student(int n,double s):num(n),score(s)void display();private:int num;double score;void Student:display()coutnum scoreendl;int main()Student stud5=Student(101,78.5),Student(102,85.5),Student(103,98.5),Student(104,100.0),Studen

9、t(105,95.5);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 48 页 -【第 4 页共 48 页】Student*p=stud;for(int i=0;idisplay();return 0;6建立一个对象数组,内放5 个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在 max函数中找出 5 个学生中成绩最高者,并输出其学号。初值自拟。#include using namespace std;class Student public:Student(int n,float s):num(n),score(s)int num;float sc

10、ore;void main()Student stud5=Student(101,78.5),Student(102,85.5),Student(103,98.5),Student(104,100.0),Student(105,95.5);void max(Student*);Student*p=&stud0;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;coutarrk.num max_scoreendl;7用 new

11、建立一个动态一维数组,并初始化int10=1,2,3,4,5,6,7,8,9,10,用指针输出,最后销毁数组所占空间。#include#include using namespace std;void main()int*p;p=new int10;for(int i=1;i=10;i+)*(p+i-1)=i;cout*(p+i-1);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 48 页 -【第 5 页共 48 页】coutendl;delete p;return;8定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普

12、通函数。编写程序,求两个复数之和。初值自拟。#include using namespace std;class Complex public:Complex()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 Com

13、plex:display()cout(real,imagi)endl;Complex operator+(Complex&c1,Complex&c2)return Complex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag();int main()Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;coutc3=;c3.display();return 0;9定义一个复数类Complex,重载运算符“”,“”,使之能用于复数的加,减运算,运算符重载函数作为Complex类的成员函数。编程序,分别求出两个复数

14、之和,差。初值自拟。using namespace std;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 48 页 -【第 6 页共 48 页】class Complex public:Complex()real=0;imag=0;Complex(double r,double i)real=r;imag=i;Complex operator+(Complex&c2);Complex operator-(Complex&c2);void display();private:double real;double imag;Complex Complex:operator+(Com

15、plex&c2)Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;return c;Complex Complex:operator-(Complex&c2)Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;void Complex:display()cout(real,imagi)endl;int main()Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;coutc1+c2=;c3.display();c3=c1-c2;coutc1-c2=;c3

16、.display();return 0;10定义一个复数类Complex,重载运算符“*”,“/”,使之能用于复数的乘,除。运算符重载函数作为Complex类的成员函数。编程序,分别求出两个复数之积和商。初值自拟。提示:两复数相乘的计算公式为:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i。两复数相除的计算公式为:(a+bi)/(c+di)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d)i。#include using namespace std;class Complex public:Complex()real=0;imag=0;名师资料总结-精品资料

17、欢迎下载-名师精心整理-第 6 页,共 48 页 -【第 7 页共 48 页】Complex(double r,double i)real=r;imag=i;Complex operator*(Complex&c2);Complex operator/(Complex&c2);void display();private:double real;double imag;Complex Complex:operator*(Complex&c2)Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=imag*c2.real+real*c2.imag;r

18、eturn c;Complex Complex:operator/(Complex&c2)Complex c;c.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(real,imagi)endl;int main()Complex c1(3,4),c2(5,-10),c3;c3=c1*c2;coutc1*

19、c2=;c3.display();c3=c1/c2;coutc1/c2=;c3.display();return 0;11定义一个复数类Complex,重载运算符“”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1+c2,i+c1,c1+i 均合法(设 i 为整数,c1,c2 为复数)。编程序,分别求两个复数之和、整数和复数之和。初值自拟。#include class Complex public:Complex()real=0;imag=0;Complex(double r,double i)real=r;imag=i;Comple

20、x operator+(Complex&c2);Complex operator+(int&i);friend Complex operator+(int&,Complex&);名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 48 页 -【第 8 页共 48 页】void display();private:double real;double imag;Complex Complex:operator+(Complex&c)return Complex(real+c.real,imag+c.imag);Complex Complex:operator+(int&i)return

21、 Complex(real+i,imag);void Complex:display()cout(real,imagi)endl;Complex operator+(int&i,Complex&c)return Complex(i+c.real,c.imag);int main()Complex c1(3,4),c2(5,-10),c3;int i=5;c3=c1+c2;coutc1+c2=;c3.display();c3=i+c1;couti+c1=;c3.display();c3=c1+i;coutc1+i=;c3.display();return 0;12有两个矩阵 a 和 b,均为 2

22、 行 3 列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如 c=a+b。初值自拟。#include class Matrix public:Matrix();friend Matrix operator+(Matrix&,Matrix&);void input();void display();private:int mat23;Matrix:Matrix()名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 48 页 -【第 9 页共 48 页】for(int i=0;i2;i+)for(int j=0;j3;j+)matij=0;Matrix operator+(Ma

23、trix&a,Matrix&b)Matrix c;for(int i=0;i2;i+)for(int j=0;j3;j+)c.matij=a.matij+b.matij;return c;void Matrix:input()coutinput value of matrix:endl;for(int i=0;i2;i+)for(int j=0;jmatij;void Matrix:display()for(int i=0;i2;i+)for(int j=0;j3;j+)coutmatij;coutendl;int main()Matrix a,b,c;a.input();b.input();

24、coutendlMatrix a:endl;a.display();coutendlMatrix b:endl;b.display();c=a+b;coutendlMatrix c=Matrix a+Matrix b:endl;c.display();return 0;13将运算符“”重载为适用于复数加法,重载函数不作为成员函数,而放在类外,作为 Complex类的友元函数。初值自拟。#include class Complex public:Complex()real=0;imag=0;Complex(double r)real=r;imag=0;名师资料总结-精品资料欢迎下载-名师精心整理

25、-第 9 页,共 48 页 -【第 10 页共 48 页】Complex(double r,double i)real=r;imag=i;friend Complex operator+(Complex&c1,Complex&c2);void display();private:double real;double imag;Complex operator+(Complex&c1,Complex&c2)return Complex(c1.real+c2.real,c1.imag+c2.imag);void Complex:display()cout(real,imagi)endl;int m

26、ain()Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;coutc1=;c1.display();coutc2=;c2.display();coutc1+c2=;c3.display();return 0;14.定义一个字符串类String,用来存放不定长的字符串,重载运算符“”,用于两个字符串的等于比较运算。初值自拟。#include#include class String public:String()p=NULL;String(char*str);friend bool operator=(String&string1,String&string2);vo

27、id display();private:char*p;String:String(char*str)p=str;void String:display()coutp;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 48 页 -【第 11 页共 48 页】bool operator=(String&string1,String&string2)if(strcmp(string1.p,string2.p)=0)return true;else return false;void compare(String&string1,String&string2)if(operator=(

28、string1,string2)=1)string1.display();cout=;string2.display();coutendl;int main()String string1(Hello),string2(Hello);compare(string1,string2);return 0;15.定义一个字符串类String,用来存放不定长的字符串,重载运算符,用于两个字符串的小于的比较运算。初值自拟。#include#include class String public:String()p=NULL;String(char*str);friend bool operator(St

29、ring&string1,String&string2);void display();private:char*p;String:String(char*str)p=str;void String:display()coutp;bool operator(String&string1,String&string2)if(strcmp(string1.p,string2.p)0)return true;else return false;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 48 页 -【第 12 页共 48 页】void compare(String&string1

30、,String&string2)if(operator(string1,string2)=1)string1.display();cout;string2.display();cout,用于两个字符串的大于的比较运算。初值自拟。#include#include class String public:String()p=NULL;String(char*str);friend bool operator(String&string1,String&string2);void display();private:char*p;String:String(char*str)p=str;void S

31、tring:display()cout(String&string1,String&string2)if(strcmp(string1.p,string2.p)0)return true;else return false;void compare(String&string1,String&string2)if(operator(string1,string2)=1)string1.display();cout;string2.display();名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 48 页 -【第 13 页共 48 页】coutendl;int main()St

32、ring string1(Hello),string2(Book);compare(string1,string2);return 0;17定义一个描述学生基本情况的类,数据成员包括姓名、学号、C+成绩、英语和数学成绩,成员函数包括输出数据,求出总成绩和平均成绩。数据自拟。#includestring.h#include class CStuScore public:char strName12;char strStuNO9;void SetScore(char sname12,char NO9,float s0,float s1,float s2)strcpy(strName,sname);

33、strcpy(strStuNO,NO);fScore0=s0;fScore1=s1;fScore2=s2;void print()cout cout姓名:strName;cout 学号:strStuNO;cout C+成绩:fScore0英语成绩:fScore1数学成绩:fScore2endl;float GetSUM()return(float)(fScore0+fScore1+fScore2);float GetAverage();private:float fScore3;float CStuScore:GetAverage()return(float)(fScore0+fScore1+

34、fScore2)/3.0);void main()CStuScore one;float a,b,c;char Name12;char StuNO9;coutName;coutStuNO;cout 成绩 1:成绩 2:成绩 3:abc;one.SetScore(Name,StuNO,a,b,c);one.print();cout 平均成绩为 one.GetAverage()n;cout 总成绩 one.GetSUM()n;18先建立一个 Point(点)类,包含数据成员x,y(坐标点)。以它为基类,派生出一个 Circle(圆)类,增加数据成员r(半径),再以 Circle类为直接基类,派生出

35、一个Cylinder(圆柱体)类,在增加数据成员h(高)。编写程序,重载运算符“”,使之能够用于输出以上类对象。#include class Point public:Point(float=0,float=0);void setPoint(float,float);float getX()const return x;float getY()const return y;friend ostream&operator(ostream&,const Point&);protected:float x,y;Point:Point(float a,float b)x=a;y=b;void Poin

36、t:setPoint(float a,float b)x=a;y=b;ostream&operator(ostream&output,const Point&p)outputp.x,p.yendl;return output;class Circle:public Point public:Circle(float x=0,float y=0,float r=0);void setRadius(float);float getRadius()const;float area()const;friend ostream&operator(ostream&,const Circle&);prote

37、cted:float radius;Circle:Circle(float a,float b,float r):Point(a,b),radius(r)void Circle:setRadius(float r)名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 48 页 -【第 15 页共 48 页】radius=r;float Circle:getRadius()const return radius;float Circle:area()const return 3.14159*radius*radius;ostream&operator(ostream&output,co

38、nst Circle&c)outputCenter=c.x,c.y,r=c.radius,area=c.area()endl;return output;class Cylinder:public Circle public:Cylinder(float x=0,float y=0,float r=0,float h=0);void setHeight(float);float getHeight()const;float area()const;float volume()const;friend ostream&operator(ostream&,const Cylinder&);prot

39、ected:float height;Cylinder:Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h)void Cylinder:setHeight(float h)height=h;float Cylinder:getHeight()const return height;float Cylinder:area()const return 2*Circle:area()+2*3.14159*radius*height;float Cylinder:volume()const return Circle:are

40、a()*height;ostream&operator(ostream&output,const Cylinder&cy)outputCenter=cy.x,cy.y,r=cy.radius,h=cy.height narea=cy.area(),volume=cy.volume()endl;return output;int main()Cylinder cy1(3.5,6.4,5.2,10);名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 48 页 -【第 16 页共 48 页】coutnoriginal cylinder:nx=cy1.getX(),y=cy1.getY(

41、),r=cy1.getRadius(),h=cy1.getHeight()narea=cy1.area(),volume=cy1.volume()endl;cy1.setHeight(15);cy1.setRadius(7.5);cy1.setPoint(5,5);coutnnew cylinder:ncy1;Point&pRef=cy1;coutnpRef as a point:pRef;Circle&cRef=cy1;coutncRef as a Circle:cRef;return 0;19写一个程序,定义抽象类型Shape,由他派生三个类:Circle(圆形),Rectangle(矩形

42、),Trapezoid(梯形),用一个函数printArea分别输出三者的面积,3 个图形的数据在定义对象是给定。#include using namespace std;class Shape public:virtual double area()const=0;class Circle:public Shape public:Circle(double r):radius(r)virtual double area()const return 3.14159*radius*radius;protected:double radius;class Rectangle:public Shap

43、e public:Rectangle(double w,double h):width(w),height(h)virtual double area()const return width*height;protected:double width,height;class Trapezoid:public Shape public:名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 48 页 -【第 17 页共 48 页】Trapezoid(double w,double h,double len):width(w),height(h),length(len)virtual d

44、ouble area()const return 0.5*height*(width+length);protected:double width,height,length;void printArea(const Shape&s)couts.area()endl;int main()Circle circle(12.6);coutarea of circle =;printArea(circle);Rectangle rectangle(4.5,8.4);coutarea of rectangle=;printArea(rectangle);Trapezoid trapezoid(4.5,

45、8.4,8.0);coutarea of trapezoid =;printArea(trapezoid);return 0;20定义一个人员类Cperson,包括数据成员:姓名、编号、性别和用于输入输出的成员函数。在此基础上派生出学生类CStudent(增加成绩)和老师类 Cteacher(增加教龄),并实现对学生和教师信息的输入输出。#include#include class CPerson public:void SetData(char*name,char*id,bool isman=1)int n=strlen(name);strncpy(pName,name,n);pNamen=

46、0;n=strlen(id);strncpy(pID,id,n);pIDn=0;bMan=isman;void Output()cout 姓名:pNameendl;cout 编号:pIDendl;char*str=bMan?男:女;名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 48 页 -【第 18 页共 48 页】cout 性别:strendl;private:char pName20;char pID20;bool bMan;class CStudent:public CPerson public:void InputScore(double score1,double

47、score2,double score3)dbScore0=score1;dbScore1=score2;dbScore2=score3;void Print()Output();for(int i=0;i3;i+)cout 成绩 i+1:dbScoreiendl;private:double dbScore3;class Cteacher:public CPerson public:void Inputage(double age)tage=age;void Print()Output();cout 教龄:tageendl;private:double tage;void main()CSt

48、udent stu;Cteacher tea;stu.SetData(LiMing,21010211);stu.InputScore(80,76,91);名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 48 页 -【第 19 页共 48 页】stu.Print();tea.SetData(zhangli,001);tea.Inputage(12);tea.Print();二、第二类题目(20道,每题 9 分,请自行设计输出格式)1某商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,因此,商店需要记下目前库存货物的总量,要求把商店货物购进和卖出

49、的情况模拟出来。#include using namespace std;class Goods public: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);cin w

50、;Goods *g2=new Goods(w);cout Goods:TotalWeight()endl;delete g2;cout Goods:TotalWeight()endl;2设计一个Time 类,包括三个私有数据成员:hour,minute,sec,用构造函数初始化,内设公用函数display(Date&d),设计一个Date类,包括三个私有数据成员:mo nt h,d a y,y e a r,也 用 构 适 函 数 初 始 化;分 别 定 义 两 个 带 参 数 的 对 象t1(12,30,55),d1(3,25,2010),通过友员成员函数的应用,输出d1 和 t1的值。#in

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁