C++面向对象程序设计 编程题.docx

上传人:b****8 文档编号:9543315 上传时间:2023-02-05 格式:DOCX 页数:40 大小:22.30KB
下载 相关 举报
C++面向对象程序设计 编程题.docx_第1页
第1页 / 共40页
C++面向对象程序设计 编程题.docx_第2页
第2页 / 共40页
C++面向对象程序设计 编程题.docx_第3页
第3页 / 共40页
C++面向对象程序设计 编程题.docx_第4页
第4页 / 共40页
C++面向对象程序设计 编程题.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

C++面向对象程序设计 编程题.docx

《C++面向对象程序设计 编程题.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计 编程题.docx(40页珍藏版)》请在冰豆网上搜索。

C++面向对象程序设计 编程题.docx

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++)

cout<

cout<

return0;

}

18、编写一个矩形rectangle类,有数据成员长len和宽wid,构造函数retange(int,int).和友元函数

intarea(rectangleT)和intfun(rectangleT)分别计算给定长方形的周长和面积。

#include

usingnamespacestd;

classrectangle

{

public:

rectangle(int,int);

friendintarea(rectangleT);

friendintfun(rectangleT);

private:

intlen,wid;

};

rectangle:

:

rectangle(inta,intb)

{

len=a;

wid=b;

}

intarea(rectangleT)

{

return(T.len*T.wid);

}

intfun(rectangleT)

{

return(2*(T.len+T.wid));

}

intmain()

{

rectangleR(20,30);

cout<<"面积:

"<

cout<<"周长:

"<

return0;

}

19、定义一个复数类,用友元函数实现对双目运算符+和*的运算符重载,使其适用于复数运算。

#include

#include

classCComplex

{

#defineerr0.00000001

double_x,_y;

public:

CComplex(doublex=0,doubley=0):

_x(x),_y(y){}

CComplexoperator+(constCComplex&z);

CComplexoperator*(constCComplex&z);

friendostream&operator<<(ostream&os,constCComplex&z);

friendistream&operator>>(istream&is,CComplex&z);

};

intmain()

{

CComplexz1(0,1.2);

CComplexz2(1,1.2);

cout<

cout<

cin>>z1;

cout<

return0;

}

CComplexCComplex:

:

operator+(constCComplex&z)

{

CComplexc;

c._x=_x+z._x;

c._y=_y+z._y;

returnc;

}

CComplexCComplex:

:

operator*(constCComplex&z)

{

CComplexc;

c._x=_x*z._x-_y*z._y;

c._y=_x*z._y+_y*z._x;

returnc;

}

ostream&operator<<(ostream&os,constCComplex&z)

{

if(fabs(z._x)>err)

cout<

if(fabs(z._y-1)

cout<<(fabs(z._x)>err?

"+i":

"i");

elseif(fabs(z._y+1)

cout<<"-i";

elseif(z._y>err)

cout<<(fabs(z._x)>err?

"+":

"")<

elseif(z._y<-err)

cout<

returnos;

}

istream&operator>>(istream&is,CComplex&z)

{

is>>z._x>>z._y;

returnis;

}

20、输入10个同学的成绩,统计80分以上和不及格的人数,并输出平均值。

#include

usingnamespacestd;

intmain()

{

doublea[10],sum=0,var;

inti,j=0,k=0;

cout<<"请输入10个学生成绩:

"<

for(i=0;i<10;i++)

{

cin>>a[i];

sum=sum+a[i];

if(a[i]>=80)

j++;

if(a[i]<60)

k++;

}

var=sum/10;

cout<<"80分以上的人数是:

"<

cout<<"不及格的人数是:

"<

cout<<"平均分是:

"<

return0;

}

21、声明一个类String1,其数据成员为charhead[100],构造函数String(char*Head)实现head的初始化,成员函数voidReverse()实现head内字符串的逆序存放,成员函数voidPrint()实现head内字符串的输出。

#include

#include

usingnamespacestd;

classString

{

public:

String(char*Head);

voidReverse();

voidPrint();

private:

charhead[100];

};

String:

:

String(char*Head)

{

inti=0;

char*p=Head;

while(*p!

='\0')

{

head[i]=*p;

i++;

p++;

}

head[i]='\0';

}

voidString:

:

Reverse()

{

inti=0;

charh[100],*p=head;

while(*p!

='\0')p++;

while(*p!

=head[0])

{

p--;

h[i]=*p;

i++;

}

h[i]='\0';

while(i>=0)

{

head[i]=h[i];

i--;

}

}

voidString:

:

Print()

{

char*p=head;

for(;(*p)!

='\0';p++)cout<<(*p);

cout<

}

intmain()

{

char*Head="abcdefgh";

Strings(Head);

cout<<"正序:

";

s.Print();

s.Reverse();

cout<<"逆序:

";

s.Print();

return0;

}

22编写程序形成如下矩阵。

ê2ê1é

4êê3êA=

5ëê

ûú4321ú3211úú2111úú1111ù1111

#include

usingnamespacestd;

intmain()

{

inta[5][5];

intii,jj;

for(ii=0;ii<5;ii++)

{

for(jj=0;jj<5;jj++)

{

if(ii-jj<1)

{

a[ii][jj]=1;

}

else

{

a[ii][jj]=ii+1-jj;

}

}

}

for(ii=0;ii<5;ii++)

{

for(jj=0;jj<5;jj++)

cout<

cout<

}

return0;

}

23、定义盒子Box类,要求具有以下成员:

可设置盒子形状;可计算盒子体积;可计算盒子的表面积。

#include

usingnamespacestd;

classBox

{

public:

Box(double,double,double);

doublearea();

doublev();

private:

doublex,y,z;

};

Box:

:

Box(doublex1,doubley1,doublez1)

{

x=x

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1