下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+面向对象程序设计2010期末考试编程题,如果可以1、编写一个程序根据输入的三角形的三条边判断是否能组成三角形 则输出它的面积和三角形类型(等边、等腰、直角三角形)。#in clude<iostream>#in clude<math.h>using n amespace std;int main()double a,b,c;double v,p;coutvv"请输入三角形三条边:"<<endl;cin> >a>>b>>c;if(a+b>c&&a+c>b&&b
2、+c>a)p=(a+b+c)/2;v=sqrt(p*(p-a)*(p-b)*(p-c);cout«"该三角形面积是"<<v<<endl;if(a=b&&a=c)coutvv"该三角形是等边三角形! "<<endl;elseif(a=b&&a!=c|a=c&&a!=b|b=c&&b!=a)coutvv"该三角形是等腰三角形! "vvendl;if(a*a+b*b=c*c)|(a*a+c*c=b*b)|(c*c+b*b=a*
3、a)coutvv"该三角形是直角三角形! "<<endl;elsecoutvv"这三条边组不成三角形! "vvendl;return 0;2、定义一个学生类,其中有3个数据成员:学号、姓名、年龄,以及若干成员函数。同时编写main函数使用这个类,实现对学生数据的赋值和输出。#i nclude <iostream>#in cludevstri ng>using n amespace std;class stude ntint num;stri ng n ame;int age;public:stude nt() num=O;n
4、 ame='O'age=O;stude nt(i nt,stri ng,i nt);void show();stude nt:stude nt(i nt a,stri ng b,i nt c):nu m(a), name(b),age(c) void stude nt:show()cout<<"stude nt nu mber:"«e nds< <num <<e ndl;cout< <"n ame:"<<e nds< <n ame<<e ndl;
5、cout<<"age:"<<e ndsvvagevve ndl;int main()student s1(200803986,"梅寒芳",23);s1.show();return 0;3、从键盘输入若干个学生成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。#in clude<iostream>using n amespace std;int main()double a100;double max=0 ,min=100,t;int i;for(i=0;i<100;i+)cin> >ai;if
6、(ai<0)break;elseif(ai>max)max=ai;if(ai<mi n)min=ai;coutvv" 最大值是:"vvmaxvvendl;coutvv"最小值是:"<<minvvendl;return 0;4、编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积#in clude<iostream>using n amespace std;int main()double a,h,s,v;coutvv"半径为:"<<endl;cin> >a;cou
7、tvv"高为:"vvendl;cin> >h;s=3.14159*a*a;v=s*h;coutvv"底面积为:"vvsvvendl;coutvv"体积为:"vvvvvendl;return 0;5、编写一个程序,输入年、月,打印出该年份该月的天数#i nclude<stdio.h>mai n()int y,m,d;prin tf("year mon th=");sca nf("%d%d", &y,&m);switch(m)case 1:case 3:cas
8、e 5:case 7:case 8:case 10:case 12:d=31;break;case 4:case 6:case 9:case 11:d=30;break;case 2:if (y%4=0 && y%100!=0 | y%400=0) d=29; else d=28;prin tf("days=%dn",d);并在主函6编写函数将化氏温度转换为摄氏温度,公式为C= (F-32) *5/9 ; 数中调用。#in clude<iostream>using n amespace std;double fun( double a);int
9、main()double f=37.5,c;c=fu n(f);cout«"华氏温度为:"vvfvv" T "<<endl;cout«"摄氏温度为:"<<c<<" °C "<<endl;return 0;double fun( double a)b=(a-32)*5/9;return b;7、声明一个Tree (树)类,有成员ages(树龄),成员函数grow(int years)用以对 ages加上years, showage()用以显
10、示tree对象的ages值。在主函数中定义Tree类对象,并调用成员函数(学生自行指定实参数#in clude<iostream>using n amespace std;class Treeprivate:int ages;public:int grow(i nt years)ages=ages+years;retur n ages;void getage()cout«"输入树的树龄:"<<endl;cin> >ages;void showage()cout«"该树的年龄是:"vvagesvven
11、dl;;int main()Tree ages,years;ages.getage();ages.grow(5);ages.showage();return 0;8、定义一个复数类,用友元函数实现对双目运算符+ ”的运算符重载,使其适用于复数运算。#include<iostream.h>class Complexprivate:double real;double imag;public:Complex()real=0;imag=0;Complex(double r,double i):real(r),imag(i)friend Complex operator+(Complex
12、&c1,Complex &c2);void display。;;void Complex:display()coutvvrealvv"+"vvimagvv"i"v<e ndl;Complex operator+(Complex &c1,Complex &c2)retur n Complex(c1.real+c2.real,c1.imag+c2.imag);int main()Complex c1(3,4);Complex c2(4,2.3);Complex c3;c3.display();return 0;9、有一个
13、函数如下:输入x的值,计算出相应的y值。#in clude<iostream>using n amespace std;int main()int x,y;cin> >x;if(x<5) y=5;if(x>=5&& x<15) y=x+6;if(x>=15) y=x-6;coutvvyvve ndl;return 0;,分别求出整型数的两数10、14、17、使用函数重载的方法定义两个重名函数 之和和浮点数的两数之和,并在主函数中调用。#in clude<iostream>using n amespace std;tem
14、platevtype name T>T add(T a,T b)T c;c=a+b;return c;int main()int a,b,c;float x,y,z;coutvv"请输入两个整型数:"<<endl;cin> >a>>b;coutvv"请输入两个浮点数:"<<endl;cin> >x>>y;c=add(a,b);z=add(x,y);coutvv"整型数之和是:"vvcvvendl;coutvv"浮点数之和是:"vvzvve
15、ndl;return 0;、梯形、圆计算不同形11、定义一个抽象类shape用以计算面积,从中派生出计算长方形 形面积的派生类。程序中通过基类指针来调用派生类中的虚函数 , 状的面积。#i nclude <iostream>#define PI 3.1415926using n amespace std;class Shapepublic:void show();protected:double s;void Shape:show()cout«"面积:"<<s<<endl;class Circle :public Shapepu
16、blic:void GetArea();Circle(double);private:double r;;Circle:Circle(double a) r=a;void Circle:GetArea()s=r*r*PI;int main()Circle C(6);C.GetArea();return 0;可进行增值和减12、定义计数器类Counter。要求具有以下成员:计数器值;值记数;可提供记数值。#include <iostream>using n amespace std;class Coun terpublic:Coun ter(i nt );Coun ter opera
17、tor +();Coun ter operator -();void display();private:int i;Coun ter:Co un ter(i nt a)i=a;void Coun ter:display()cout«i;Coun ter Coun ter: operator +()return Coun ter (+i);Coun ter Coun ter: operator -()return Cou nter(-i);int main()Cou nter C1(5);cout«"C1="C1.display();+C1;cout
18、171;e ndl<v"C 仁"C1.display();-C1;cout«e ndl<v"C 仁"C1.display();cout«e ndl;return 0;13、输入一个自然数,输出其各因子的连乘形式,如输入12,贝U输出12=1*2*2*3。#in clude<iostream>using n amespace std;int main()int i,n;cin>>n;cout«" n="<<"1"for(i=2;i<=
19、n;)if(n %i=0)n=n/i;cout<<"*"<<i;con ti nue;cout«e ndl;return 0;15、定义一个基类:点类,包括x坐标和y坐标,从它派生一个圆类,增加数据 成员r (半径),圆类成员函数包括构造函数、求面积的函数和输出显示圆心坐标及圆半径的函数。#in clude<iostream>using n amespace std;class Dotpublic:int x;int y;Dot();class Circle:public Dotprivate:int r;public:Circ
20、le():Dot()void get();void area();void show();;void Circle:get()cout«"输入圆心坐标、圆的半径:"<<endl;cin> >x>>y>>r;void Circle:area()double s=0;s=3.14159*r*r;cout«"圆的面积是:"vvsvvendl;void Circle:show()coutvv"圆心坐标是:("vvxvv","vvyvv")&quo
21、t;vvendl;coutvv"圆的半径是:"vvrvvendl;int main() Circle d;d.get();d.area();d.show();return 0;16、N个整数从小到大排列,输入一个新数插入其中,使N+1个整数仍然有序。#in clude<iostream>using n amespace std;int main()int a11=10,20,30,40,50,60,70,80,90,100;int i,j,n;cout«"原顺序为:"<<endl;for(i=0;i<10;i+)c
22、out<<ai<<""cout«e ndl;cout«"请输入一个新数:"<<endl;cin>>n;if(aO> n)for(i=9;i>=0;i-)ai+1=ai;a0=n;if(a9< n) a10=n; if(n> a0&&n< a9) for(i=1;i<9;i+)if(n> ai) j=i+1;for(i=9;i>=j;i-)ai+1=ai;aj=n;for(i=0;i<11;i+) cout<<
23、;ai<<"" cout«e ndl;return 0;18、编写一个矩形rectangle类,有数据成员长len和宽wid ,构造函数retange(int,int).和友元函数int area(recta ngle T)和int fun (recta ngle T)分别计算给定长方形的周长和面积。#i nclude <iostream>using n amespace std;class recta nglepublic:recta ngle(i nt ,i nt );friend int area(recta ngle T);frie
24、nd int fun (rectangle T);private:int len ,wid;recta ngle:recta ngle(i nt a, int b)len=a;wid=b;int area(recta ngle T) return (Ten *T.wid);int fun (recta ngle T)return (2*(T.le n+T.wid);int main()rectangle R(20,30);cout«"面积:"<<area(R)<<endl;cout«"周长:"vvfun(R)&
25、#171;endl;return 0;19、定义一个复数类,用友元函数实现对双目运算符+和*的运算符重载,使其适用于复数运算。#include <cmath>#i nclude <iostream.h>class CComplex#defi ne err 0.00000001 double _x,_y;public:CComplex(double x=0,double y=0):_x(x),_y(y)CComplex operator+(c onst CComplex&z);CComplex operator*(c onst CComplex&z);fr
26、iend ostream&operator <<(ostrea m&os,c onst CComplex&z);friend istream&operator >>(istrea m&is,CComplex&z);int main()CComplex z1(0,1.2);CComplex z2(1,1.2);cout<<z1+z2<<e ndl;cout<<z1*z2<<e ndl;cin> >z1;cout<<z1<<e ndl;retu
27、rn 0;CComplex CComplex:operator+(c onst CComplex&z)CComplex c;c._x=_x+z._x;c._y=_y+z._y;return c;CComplex CComplex:operator*(c onst CComplex&z)CComplex c;c._x=_x*z._x-_y* z._yc._y=_x*z._y+_y*z._x;return c;ostrea m&operator <<(ostrea m&os,c onst CComplex&z)if(fabs(z._x)>e
28、rr)cout<<z._x;if(fabs(z._y-1)<err)cout<<(fabs(z._x)>err?"+i":"i");else if(fabs(z._y+1)<err)cout«"-i"else if(z._y >err)cout<v(fabs(z._x)>err?"+":"")vv z._y<<" i"else if(z._y<-err)cout<<z._y&l
29、t;<" i"return os;istrea m&operator >>(istream&is,CComplex&z)is>>z._x>>z._y;return is;,并输出平均值20、输入10个同学的成绩,统计80分以上和不及格的人数#in clude<iostream>using n amespace std;int main()double a10,sum=0,var;int i,j=O,k=O;cout«"请输入10个学生成绩:"<<endl;
30、for(i=0;i<10;i+)cin> >ai;sum=sum+ai;if(ai>=80)j+;if(ai<60)k+;var=sum/10;cout<<"80 分以上的人数是:"vvjvvendl;cout«"不及格的人数是:"vvkvvendl;cout«"平均分是:"vvvarvvendl;return 0;21、声明一个类String1 ,其数据成员为char head100,构造函数String(char *Head)实现head的初始化,成员函数void Re
31、verse ()实现head内 字符串的逆序存放,成员函数void Print()实现head内字符串的输出。#in clude <stri ng>#i nclude <iostream> using n amespace std;class String public:String (char *Head);void Reverse。;void Print ();private:char head100;Strin g:Stri ng(char *Head)int i=0;char *p=Head;while(*p!='0')headi=*p;i+;P
32、+; headi='0' void Strin g:Reverse()int i=0;char h100,*p=head; while(*p!='0') p+; while(*p!=head0)p-;hi=*p;i+;hi='0'while(i>=0)headi=hi;i-; void Stri ng:Pri nt() char *p=head;for(;(*p)!='0'p+) cout«(*p); cout«e ndl;int main()char *Head="abcdefgh"
33、Stri ng s(Head);cout«"正序:";s.Pri nt();s.Reverse();cout«"逆序:";s.Pri nt();return 0;22编写程序形成如下矩阵。2 14 3 A=4321 32112111 111111 1111 #in clude<iostream> using n amespace std; int main()int a55;int iijj;for (ii = 0; ii< 5; ii+)for (jj = 0; jj < 5; jj+)if (ii - jj
34、 < 1)aiijj = 1;elseaiijj = ii+1 - jj;for(ii=0;ii<5;ii+)for(jj=0;jj<5;jj+)cout«aiijjvv""cout«e ndl;return 0;23、定义盒子Box类,要求具有以下成员:可设置盒子形状;可计算盒子体积;可计算盒子的表面积。#include <iostream>using n amespace std;class Boxpublic:Box(double,double,double);double area();double v();priv
35、ate:double x,y,z;Box:Box(double x1,double y1,double z1)x=x1;y=yi;z=z1;double Box:area()return (2*(x*y+y*z+x*z);double Box:v()return (x*y*z);int main()Box B(2,3,4);cout«"表面积:"v<B.area()v<endl;cout«"体积:"v<B.v()v<endl;return 0;24、33、声明一个哺乳动物 Mammal类,再由此派生出狗Dog类
36、,声明一个 Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。#in clude<iostream>using n amespace std;class mammalpublic:mammal()默认构造函数cout<<"mammal's con structor"<<e ndl;mammal()cout<<"mammal'a destucor"<<e ndl;public:dog()cout«"dog's con structor&qu
37、ot;«e ndl;dog()cout<<"dog's destructor"<<e ndl;;int main()dog a;return 0;25、30、定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生 类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。#in clude <stri ng>#in elude <iostream> using n amespace std;class pers onpublic:pers on( stri ng ,stri ng,i nt);
38、protected:stri ng n ame;stri ng sex;int age;pers on:pers on( stri ng n, stri ng s, int a)n ame=n;sex=s;age=a;class teacher :public pers onteacher(string ,string,int,string,string,double);void display。;private:stri ng work_ num;string title;double wage;teacher:teacher(stri ng n, stri ng s, int a, str
39、i ng wo, stri ng t, double wa):pers on( n, s,a) work_ num=wo;title=t;wage=wa;void teacher:display()cout«"姓名:"<<name<<endl<<"性别:"vvsexvvendl<<"年龄工资:"<<age<<e ndl;cout«"工号:"v<work_numv<endl<<"职称:&quo
40、t;vvtitlevvendl<<""vvwagevve ndl;public:stude nt(stri ng,stri ng,i nt,stri ng,stri ng,stri ng,double);void show();private:stri ng num;stri ng grade;string major;double score;stude nt:stude nt(stri ng n, stri ng s, int a, stri ng nu, stri ng g, stri ng m, double sc):pers on(n, s,a)/注意
41、:只写n,不是string nnum=nu;grade=g;major=m;score=sc;void stude nt:show()cout«"姓名:"<<name«endl<<"性别:"vvsexvvendl<<"年龄:"vvagevve ndl;cout«" 学号:"<<num<<endl<<"年级:"<<grade<<endl<<"专业:&q
42、uot;vvmajorvvendlvv"入学成绩:"<<score<<e ndl;int main()teacher t("侯传旺","男",20,"200901001010","教授",2100);t.display();student s("秦洪敏","女",21,"200902002026","大二","应用心理学",540);s.show();return 0;26
43、、写一个Complex类,将运算符+ ”重载为适用于复数加法,重载函数不作 为成员函数,而放在类外,作为Complex类的友元函数。如例题10.3#i nclude <iostream.h>class complexprivate:double a;double b;public:complex。;complex(double i,double j);friend complex operator +(complex&,complex);void setreal(double x);void setimag(double y);void getreal();void get
44、imag();friend ostream& operator <<(ostream& out,complex& x);friend istream& operator >>(istream& in, complex& x);complex:complex():a(O),b(O)complex:complex(double i,double j):a(i),b(j)complex operator +(complex&x,complex y)return complex(y.a,y.b);ostream&
45、operator«(ostream& out,complex &x)outvvx.avv'+'vvx.bvv'i'return out;istream& operator >>(istream& in, complex& x)in> >x.a>>x.b;return in;void complex:setreal(double x)a=x;void complex:setimag(double y)b=y;void complex:getreal()cin> >a;
46、void complex:getimag()cin> >b;complex a;complex b;cin> >a>>b;/coutvvavve ndl;/coutvvbvve ndl;coutvva+bvve ndl;/coutvvavve ndl;/coutvvbvve ndl;return 0;27、实现一个名为SimpleCircle的简单圆类,其数据成员int *itsRadius为一个 指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并 测试这个类。#i nclude <iostream>#define PI 3.1
47、415926using n amespace std;class SimpleCirclepublic:SimpleCircle(i nt *);double fun();double area();private:int *itsRadius;;SimpleCircle:SimpleCircle( int * i)itsRadius=i;double SimpleCircle:fu n()return (2 * PI * (*itsRadius);double SimpleCircle:area()return (PI*PI*(*itsRadius);int main()int a;cout
48、vv"请输入一个整数:";cin>>a;SimpleCircle S1(&a);cout«"周长:"<<S1.fun()<<endl;cout«"面积:"v<S1.area()v<endl;return 0;28、有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走 一秒,满60秒进一分钟,此时秒又从0开始算。要求输出分和秒的值。(提 示:重载单目运算符+)#i nclude <iostream>using n ames
49、pace std;class Timepublic:Time(i nt ,i nt);void operator +();void display();private:int minu te,sec;Time:Time(i nt a,i nt b)minu te=a;sec=b;void Time:operator +()if (sec<59)sec+;elseminu te+;sec=0;void Time:display()cout« minu te<<":"<<sec<<e ndl;Time T1(3,59);T1.
50、display();T1+;T1.display();return 0;29、有一个学生类student,包括学生姓名、成绩,设计一个友元函数,输出成 绩对应的等级:大于等于90:优;8090 :良;7079 :中;6069 :及格;小于60:不及格。#in clude <stri ng >#i nclude <iostream>using n amespace std;class stude ntpublic:friend void grade(stude nt & );stude nt (stri ng ,in t);private :stri ng n a
51、me;stude nt:stude nt(stri ng n ,i nt s)n ame=n;score=s;void grade (stude nt & s)if(s.score >=90)cout«"姓名:"<<«endl<<"获得:优"<<endl;if (s.score<90 && s.score>=80)cout«"姓名:"<<«endl<<"获得:良"<<endl;if (s.score>=70&&s.score<80)cout«"姓名:"<<vvendl<<"获得:中"<<endl;if (s.score>=60&&s.score<70)cout«"姓名:"<<«endl<<" 获得:及格"<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个体化医学诊疗行业营销策略方案
- 化妆用皮肤调理霜产品供应链分析
- 光通信设备产品供应链分析
- 婴儿尿裤产业链招商引资的调研报告
- 蔬菜盘商业机会挖掘与战略布局策略研究报告
- 玻璃罐细分市场深度研究报告
- 市政供水处理行业相关项目经营管理报告
- 医用柔性内窥镜产业链招商引资的调研报告
- 办公室家具出租行业经营分析报告
- 发动机用火花塞产业链招商引资的调研报告
- 中历史课堂教学的不同课型的基本方法和要求
- 中央空调管网改造工程施工组织设计
- 单位公务用车加油登记表格模板正式版
- linux说课教学内容
- 校服发布主持稿(202103)
- 马尔可夫过程
- 检验科医院感染危险风险评估
- ARM硬件调试方法ppt课件
- 【四年级书法教学设计】15课草字头
- 服装车间标准工时 工价 各类型工序价库汇总xls
- 《绝境求生·核城裂变》纪录片观后感
评论
0/150
提交评论