2012面向对象程序设计试题集 联系客服

发布时间 : 星期日 文章2012面向对象程序设计试题集更新完毕开始阅读cb36c5a0f524ccbff1218430

} void getage() { cout<<\输入树的树龄:\ cin>>ages; } void showage() {cout<<\该树的年龄是:\};

int main() { Tree ages,years; ages.getage(); ages.grow(5); ages.showage(); return 0; }

8、定义一个复数类,用友元函数实现对双目运算符“+”的运算符重载,使其适用于复数运算。 #include class Complex { private: double real; double imag; public: Complex(){real=0;imag=0;} Complex(double r,double i):real(r),imag(i){} friend Complex operator+(Complex &c1,Complex &c2); void display(); };

void Complex::display() { cout<

Complex operator+(Complex &c1,Complex &c2) { return Complex(c1.real+c2.real,c1.imag+c2.imag); }

int main() { Complex c1(3,4); Complex c2(4,2.3); Complex c3; c3=c1+c2; c3.display(); return 0; }

9、有一个函数如下: x (x<5) y= x+6 (5<=x<15) x-6 (x>=15)

输入x的值,计算出相应的y值。

#include using namespace 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; cout<

10、14、17、使用函数重载的方法定义两个重名函数,分别求出整型数的两数之和和浮点数的两数之和,并在主函数中调用。

#include using namespace std; template T add(T a,T b) { T c; c=a+b; return c; }

int main() { int a,b,c; float x,y,z; cout<<\请输入两个整型数:\ cin>>a>>b; cout<<\请输入两个浮点数:\ cin>>x>>y; c=add(a,b); z=add(x,y); cout<<\整型数之和是:\ cout<<\浮点数之和是:\ return 0; }

11、定义一个抽象类shape用以计算面积,从中派生出计算长方形、梯形、圆形面积的派生类。程序中通过基类指针来调用派生类中的虚函数,计算不同形状的面积。 #include #define PI 3.1415926 using namespace std; class Shape {

public: void show(); protected: double s; };

void Shape::show() { cout<<\面积:\}

class Circle :public Shape {

public: 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(); C.show(); return 0; }

12、定义计数器类Counter。要求具有以下成员:计数器值;可进行增值和减值记数;可提供记数值。 #include using namespace std; class Counter {

public: Counter(int ); Counter operator ++(); Counter operator --(); void display(); private: int i; };

Counter::Counter(int a) { i=a; }

void Counter::display() { cout<

Counter Counter:: operator ++() { return Counter (++i); }

Counter Counter:: operator --() { return Counter(--i); }

int main() { Counter C1(5); cout<<\ ++C1; cout<

13、输入一个自然数,输出其各因子的连乘形式,如输入12,则输出12=1*2*2*3。 #include using namespace std; int main() { int i,n; cin>>n; cout<<\ for(i=2;i<=n;) { if(n%i==0) { n=n/i;

cout<<\ continue; } i++; } cout<

15、定义一个基类:点类,包括x坐标和y坐标,从它派生一个圆类,增加数据成员r(半径),圆类成员函数包括构造函

数、求面积的函数和输出显示圆心坐标及圆半径的函数。 #include using namespace std; class Dot {

public: int x; int y; Dot(){} };

class Circle:public Dot {

private: int r; public: Circle():Dot(){} void get(); void area(); void show(); };

void Circle::get() { cout<<\输入圆心坐标、圆的半径:\ cin>>x>>y>>r; }

void Circle::area() { double s=0; s=3.14159*r*r; cout<<\圆的面积是:\}

void Circle::show() { cout<<\圆心坐标是:(\ cout<<\圆的半径是:\}

int main() { Circle d; d.get(); d.area(); d.show(); return 0; }

16、N个整数从小到大排列,输入一个新数插入其中,使N+1个整数仍然有序。 #include using namespace std; int main() { int a[11]={10,20,30,40,50,60,70,80,90,100}; int i,j,n; cout<<\原顺序为:\ for(i=0;i<10;i++)