C++面向对象程序设计 编程题.docx
- 文档编号:26478348
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:40
- 大小:22.33KB
C++面向对象程序设计 编程题.docx
《C++面向对象程序设计 编程题.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计 编程题.docx(40页珍藏版)》请在冰豆网上搜索。
C++面向对象程序设计编程题
C++面向对象程序设计
2010期末考试编程题
1、编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角三角形)。
#include
#include
usingnamespacestd;
intmain()
{
doublea,b,c;
doublev,p;
cout<<"请输入三角形三条边:
"< cin>>a>>b>>c; if(a+b>c&&a+c>b&&b+c>a) { p=(a+b+c)/2; v=sqrt(p*(p-a)*(p-b)*(p-c)); cout<<"该三角形面积是"< if(a==b&&a==c) cout<<"该三角形是等边三角形! "< else if(a==b&&a! =c||a==c&&a! =b||b==c&&b! =a) cout<<"该三角形是等腰三角形! "< if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a)) cout<<"该三角形是直角三角形! "< } else cout<<"这三条边组不成三角形! "< return0; } 2、定义一个学生类,其中有3个数据成员: 学号、姓名、年龄,以及若干成员函数。 同时编写main函数使用这个类,实现对学生数据的赋值和输出。 #include #include usingnamespacestd; classstudent { intnum; stringname; intage; public: student(){num=0;name='\0';age=0;} student(int,string,int); voidshow(); }; student: : student(inta,stringb,intc): num(a),name(b),age(c){} voidstudent: : show() { cout<<"studentnumber: "< cout<<"name: "< cout<<"age: "< } intmain() { students1(200803986,"梅寒芳",23); s1.show(); return0; } 3、从键盘输入若干个学生成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。 #include usingnamespacestd; intmain() { doublea[100]; doublemax=0,min=100,t; inti; for(i=0;i<100;i++) { cin>>a[i]; if(a[i]<0) break; else { if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } } cout<<"最大值是: "< cout<<"最小值是: "< return0; } 4、编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。 #include usingnamespacestd; intmain() { doublea,h,s,v; cout<<"半径为: "< cin>>a; cout<<"高为: "< cin>>h; s=3.14159*a*a; v=s*h; cout<<"底面积为: "< cout<<"体积为: "< return0; } 5、编写一个程序,输入年、月,打印出该年份该月的天数。 #include main() { inty,m,d; printf("yearmonth=");scanf("%d%d",&y,&m); switch(m){ case1: case3: case5: case7: case8: case10: case12: d=31;break; case4: case6: case9: case11: d=30;break; case2: if(y%4==0&&y%100! =0||y%400==0)d=29;elsed=28; } printf("days=%d\n",d); } 6、编写函数将化氏温度转换为摄氏温度,公式为C=(F-32)*5/9;并在主函数中调用。 #include usingnamespacestd; doublefun(doublea); intmain() { doublef=37.5,c; c=fun(f); cout<<"华氏温度为: "< cout<<"摄氏温度为: "< return0; } doublefun(doublea) { doubleb; b=(a-32)*5/9; returnb; } 7、声明一个Tree(树)类,有成员ages(树龄),成员函数grow(intyears)用以对ages加上years,showage()用以显示tree对象的ages值。 在主函数中定义Tree类对象,并调用成员函数(学生自行指定实参数 #include usingnamespacestd; classTree { private: intages; public: intgrow(intyears) { ages=ages+years; returnages; } voidgetage() { cout<<"输入树的树龄: "< cin>>ages; } voidshowage() {cout<<"该树的年龄是: "< }; intmain() { Treeages,years; ages.getage(); ages.grow(5); ages.showage(); return0; } 8、定义一个复数类,用友元函数实现对双目运算符“+”的运算符重载,使其适用于复数运算。 #include classComplex { private: doublereal; doubleimag; public: Complex(){real=0;imag=0;} Complex(doubler,doublei): real(r),imag(i){} friendComplexoperator+(Complex&c1,Complex&c2); voiddisplay(); }; voidComplex: : display() { cout< } Complexoperator+(Complex&c1,Complex&c2) { returnComplex(c1.real+c2.real,c1.imag+c2.imag); } intmain() { Complexc1(3,4); Complexc2(4,2.3); Complexc3; c3=c1+c2; c3.display(); return0; } 9、有一个函数如下: 输入x的值,计算出相应的y值。 #include usingnamespacestd; intmain() { intx,y; cin>>x; if(x<5)y=5; if(x>=5&&x<15)y=x+6; if(x>=15)y=x-6; cout< return0; } 10、14、17、使用函数重载的方法定义两个重名函数,分别求出整型数的两数之和和浮点数的两数之和,并在主函数中调用。 #include usingnamespacestd; template Tadd(Ta,Tb) { Tc; c=a+b; returnc; } intmain() { inta,b,c; floatx,y,z; cout<<"请输入两个整型数: "< cin>>a>>b; cout<<"请输入两个浮点数: "< cin>>x>>y; c=add(a,b); z=add(x,y); cout<<"整型数之和是: "< cout<<"浮点数之和是: "< return0; } 11、定义一个抽象类shape用以计算面积,从中派生出计算长方形、梯形、圆形面积的派生类。 程序中通过基类指针来调用派生类中的虚函数,计算不同形状的面积。 #include #definePI3.1415926 usingnamespacestd; classShape { public: voidshow(); protected: doubles; }; voidShape: : show() { cout<<"面积: "< } classCircle: publicShape { public: voidGetArea(); Circle(double); private: doubler; }; Circle: : Circle(doublea) { r=a; } voidCircle: : GetArea() { s=r*r*PI; } intmain() { CircleC(6); C.GetArea(); C.show(); return0; } 12、定义计数器类Counter。 要求具有以下成员: 计数器值;可进行增值和减值记数;可提供记数值。 #include usingnamespacestd; classCounter { public: Counter(int); Counteroperator++(); Counteroperator--(); voiddisplay(); private: inti; }; Counter: : Counter(inta) { i=a; } voidCounter: : display() { cout< } CounterCounter: : operator++() { returnCounter(++i); } CounterCounter: : operator--() { returnCounter(--i); } intmain() { CounterC1(5); cout<<"C1=";C1.display(); ++C1; cout< --C1; cout< cout< return0; } 13、输入一个自然数,输出其各因子的连乘形式,如输入12,则输出12=1*2*2*3。 #include usingnamespacestd; intmain() { inti,n; cin>>n; cout<<"n="<<"1"; for(i=2;i<=n;) { if(n%i==0) { n=n/i; cout<<"*"< continue; } i++; } cout< return0; 15、定义一个基类: 点类,包括x坐标和y坐标,从它派生一个圆类,增加数据成员r(半径),圆类成员 函数包括构造函数、求面积的函数和输出显示圆心坐标及圆半径的函数。 #include usingnamespacestd; classDot { public: intx; inty; Dot(){} }; classCircle: publicDot { private: intr; public: Circle(): Dot(){} voidget(); voidarea(); voidshow(); }; voidCircle: : get() { cout<<"输入圆心坐标、圆的半径: "< cin>>x>>y>>r; } voidCircle: : area() { doubles=0; s=3.14159*r*r; cout<<"圆的面积是: "< } voidCircle: : show() { cout<<"圆心坐标是: ("< cout<<"圆的半径是: "< } intmain() { Circled; d.get(); d.area(); d.show(); return0; } 16、N个整数从小到大排列,输入一个新数插入其中,使N+1个整数仍然有序。 #include usingnamespacestd; intmain() { inta[11]={10,20,30,40,50,60,70,80,90,100}; inti,j,n; cout<<"原顺序为: "< for(i=0;i<10;i++) cout< cout< cout<<"请输入一个新数: "< cin>>n; if(a[0]>n) { for(i=9;i>=0;i--) a[i+1]=a[i]; a[0]=n; } if(a[9] if(n>a[0]&&n { for(i=1;i<9;i++) if(n>a[i])j=i+1; for(i=9;i>=j;i--) a[i+1]=a[i]; a[j]=n; } for(i=0;i<11;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+面向对象程序设计 编程题 C+ 面向 对象 程序设计 编程