C++面向对象程序设计题目_第1页
C++面向对象程序设计题目_第2页
C++面向对象程序设计题目_第3页
C++面向对象程序设计题目_第4页
C++面向对象程序设计题目_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include<iostream.h>#include<string.h>#include<math.h>Using namespace std;1、 编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。void main()double r,h; /输入r、h值的时候用空格隔开double s,v;cout<<"请输入r,h:"cin>>r>>h;、s=3.14*r*r;v=s*h;cout<<"底面积="<<s<<",体积=

2、"<<v<<endl;2、 N个整数从小到大排列,输入一个新数插入其中,使N+1个整数仍然有序。void main()int A10=10,30,40,60,70,90;int x;cout<<"请输入要插入的整数:"cin>>x;for(int j=5;x<Aj;j-)Aj+1=Aj;Aj+1=x;for(j=0;j<7;j+)cout<<Aj<<" "cout<<endl;/*for(int j=0;j<6;j+)if(x<Aj)br

3、eak;for(int i=5;i>=j;i-)Ai+1=Ai;Aj=x;for(i=0;i<7;i+)cout<<Ai<<" "cout<<endl;3、 从键盘输入若干个学生成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。void main()int score100;int n=0,sc;cout<<"请输入学生成绩:"cin>>sc;while(sc>=0)scoren=sc;n+;cin>>sc;int max,min,i;max=min=sco

4、re0;for(i=1;i<n;i+)if(max<scorei)max=scorei;if(min>scorei)min=scorei;cout<<"最大值为="<<max<<endl;cout<<"最小值为="<<min<<endl;4、 编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角三角形)。#include<math.h>void main()double a,b,c;cout<

5、;<"请输入三条边:"cin>>a>>b>>c;if(a+b>c&&a+c>b&&b+c>a)double p,s;cout<<"可以构成三角形。"<<endl;p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c);cout<<"面积为="<<s<<endl;if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)cout<<&

6、quot;直角三角形."<<endl;if(a=b&&b=c)cout<<"等边三角形."<<endl;if(a=b|b=c|a=c)cout<<"等腰三角形。"<<endl;elsecout<<"不可以构成三角形。"<<endl;5、 输入10 个同学的成绩,统计80分以上和不及格的人数,并输出平均值。double score10;int n1=0,n2=0;double v=0;cout<<"

7、;请输入10个成绩:"for(int i=0;i<10;i+)cin>>scorei;for(i=0;i<10;i+)v+=scorei;if(scorei>=80)n1+;if(scorei<60)n2+;cout<<"大于80的人数为:"<<n1<<"不及格为:"<<n2<<endl;cout<<"平均分为:"<<v/10<<endl;6、 编写一个函数来检验输入的一个字符是大写字母还是小写

8、字母或不是26个英文字母。void isa(char c)if(c>='A'&&c<='Z')cout<<"是大写字母."<<endl;elseif(c>='a'&&c<='z')cout<<"是小写字母."<<endl;elseif(c>='0'&&c<='9')cout<<"是数字."<&

9、lt;endl;elsecout<<"不是字母."<<endl;void main()char c;cin>>c;isa(c);7、 声明一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)用以对ages 加上years,showage( )用以显示tree对象的ages值。在主函数中定义Tree类对象,并调用成员函数(学生自行指定实参数)class Treeprivate:int ages;public:Tree(int age=0)ages=age;void grow(in

10、t years)ages+=years;void showage()cout<<"树年龄为:"<<ages<<endl;void main()Tree t;t.grow(2);t.showage();Tree t2(3);t2.grow(2);t2.showage();8、 编写一个矩形rectangle类,有数据成员长len和宽wid,构造函数retange(int,int).和友元函数 int area(rectangle T)和int fun(rectangle T) 分别

11、计算给定长方形的周长和面积。class rectangleprivate:int len,wid;public:rectangle(int l,int w)len=l;wid=w;friend double area(rectangle T);friend double fun(rectangle T);double area(rectangle T)return (T.len*T.wid);double fun(rectangle T)return 2*(T.len+T.wid);void main()rectangle T(10,20);cout<<"面积="

12、;<<area(T)<<endl;cout<<"周长="<<fun(T)<<endl;9、 定义计数器类Counter。要求具有以下成员:计数器值;可进行增值和减值记数;可提供记数值。class Counterprivate:int value;public:Counter()value=0;Counter(int v)value=v;void disp()cout<<value<<endl;void operator+()value+;void operator-()value-;void

13、 main()Counter CT;CT+;CT.disp();CT+;CT.disp();CT-;CT.disp();CT-;CT.disp();10、 定义一个基类:点类,包括x坐标和y坐标,从它派生一个圆类,增加数据成员r(半径),圆类成员函数包括构造函数、求面积的函数和输出显示圆心坐标及圆半径的函数。class pointprivate:int x,y;public:point(int xx,int yy)x=xx;y=yy;int getx()return x;int gety()return y;class circle:public pointprivate:double r;p

14、ublic:circle(int x,int y,double rr):point(x,y)r=rr;double area()return 3.14*r*r;void show()cout<<"半径为"<<r<<",园心坐标为("<<getx()<<","<<gety()<<")"<<endl;void main()circle c(10,10,5);cout<<c.area()<<endl;c

15、.show();11、 定义一个抽象类shape用以计算面积,从中派生出计算长方形、梯形、圆形面积的派生类。程序中通过基类指针来调用派生类中的虚函数,计算不同形状的面积。class shappublic:virtual double area()=0;class cfx:public shapprivate:double len,wid;public:cfx(double l,double w)len=l;wid=w;double area()return len*wid;class circle:public shapprivate:double r;public:circle(double

16、 rr)r=rr;double area()return 3.14*r*r;void main()shap *sp;cfx c(10,20);circle cr(20);cout<<c.area()<<endl;cout<<cr.area()<<endl;sp=&c;cout<<sp->area()<<endl;sp=&cr;cout<<sp->area()<<endl;12、 定义一个复数类,用友元函数实现对双目运算符+和-的运算符重载,使其适用于复数运算。class

17、complexprivate:double r,i;public:complex(double rr=0,double ii=0)r=rr;i=ii;friend complex operator+(complex c1,complex c2);friend complex operator-(complex c1,complex c2);void disp()cout<<r<<"+"<<i<<"i"<<endl;complex operator+(complex c1,complex c2)c

18、omplex c;c.r=c1.r+c2.r;c.i=c1.i+c2.i;return c;complex operator-(complex c1,complex c2)complex c;c.r=c1.r-c2.r;c.i=c1.i-c2.i;return c;void main()complex c1(10,5),c2(2,4),c3;c1.disp();c2.disp();c3.disp();c3=c1+c2;c3.disp();c3=c1-c2;c3.disp();13、 定义一个学生类,其中有3个数据成员:学号、姓名、年龄,以及若干成员函数。同时编写main 函数使用这个

19、类,实现对学生数据的赋值和输出。#include<string.h>class studentprivate:long number;char name20;int age;public:student(long n,char na,int a)number=n;strcpy(name,na);age=a;void input()cin>>number>>name>>age;void output()cout<<number<<","<<name<<","&l

20、t;<age<<endl;void main()student s1(11111,"zhnag",19);s1.output();s1.input();s1.output();14、 声明一个类String1,其数据成员为char head100,构造函数String(char *Head)实现head的初始化,成员函数void Reverse()实现head内字符串的逆序存放,成员函数void Print()实现head内字符串的输出。class string1private:char head100;public

21、:string1(char *h)strcpy(head,h);void reverse()int len;char c;len=strlen(head);for(int i=0;i<len/2;i+)c=headi;headi=headlen-i-1;headlen-i-1=c;void print()cout<<head<<endl;void main()string1 s("abcdef");s.print();s.reverse();s.print();15、 定义盒子Box 类,要求具有以下成员:可设置盒子形状;可计算盒子体

22、积;可计算盒子的表面积。class boxprivate:int l,w,h;public:box()l=w=h=0;box(int len,int wid,int he)l=len;w=wid;h=he;void set(int len,int wid,int he)l=len;w=wid;h=he;int tj()return l*w*h;int area()return 2*(l*w+l*h+w*h);void main()box b1,b2(2,3,4);cout<<b1.area()<<" "<<b1.tj()<<e

23、ndl;cout<<b2.area()<<" "<<b2.tj()<<endl;b1.set(10,10,10);cout<<b1.area()<<" "<<b1.tj()<<endl;16、 声明一个哺乳动物Mammal 类,再由此派生出狗Dog 类,声明一个Dog 类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。class mammalpublic:mammal()cout<<"mammal s

24、truct called."<<endl;mammal()cout<<"mammal Destruct called."<<endl;class dog:public mammalpublic:dog()cout<<"dog struct called."<<endl;dog()cout<<"dog Destruct called."<<endl;void main()dog d;17、定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学

25、生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。class personprivate:char name20;char sex2;int age;public:person(char n,char s,int a)strcpy(name,n);strcpy(sex,s);age=a;void print()cout<<name<<","<<sex<<","<<age<<endl;class teacher:public personprivate:long

26、number;char pref20;double salay;public:teacher(char n,char s,int a,long num,char p,double sy):person(n,s,a)number=num;strcpy(pref,p);salay=sy;void print()person:print();cout<<number<<","<<pref<<","<<salay<<endl;class student:public personprivat

27、e:long number;char zy20;char bj20;double score;public:student(char n,char s,int a,long num,char z,char b,double sc):person(n,s,a)number=num;strcpy(zy,z);strcpy(bj,b);score=sc;void print()person:print();cout<<number<<","<<zy<<","<<bj<<",&qu

28、ot;<<score<<endl;void main()teacher t("AAAA","N",30,1111,"ABCD",5000);t.print();student s("BBBB","M",18,142220101,"软件","嵌入式",80);s.print();18、写一个Complex类,将运算符“+”重载为适用于复数加法,重载函数不作为成员函数,而放在类外, 作为Complex类的友元函数。19、实现一

29、个名为SimpleCircle的简单圆类,其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。 class simplecircleprivate:int *itsrad;public:simplecircle(int *it)itsrad=new int;*itsrad=*it;void input()cin>>*itsrad;void output()cout<<*itsrad<<endl;void disp()int r;r=*itsrad;cout<&l

30、t;"面积="<<3.14*r*r<<endl;void main()int r;cin>>r;simplecircle sc(&r);sc.output();sc.disp();sc.input();sc.disp();20、有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算。要求输出分和秒的值。(提示:重载单目运算符+)class Timeprivate:int minute,second;public:Time(int m=0,int s=0)minute=m;second=s;void disp()cout<<minute<<"分"<<second<<"秒"<<endl;Time &operator+()second+;if(second=60)minute+;second=0;return *this;void main()Time t(10,31);t.d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论