文档库

最新最全的文档下载
当前位置:文档库 > 面向对象程序设计上机作业

面向对象程序设计上机作业

1.编一个程序,程序中包含以下内容:

(1) 一个圆类(Circle),包含:

属性:园半径radius;常量:PI。

方法:构造方法;求面积方法area();求周长方法:perimeter();显示半径、面积和周长的方法show()。

(2) 主方法main(),在主方法中创建圆类的对象c1和c2并初始化,c1的半径为100,

c1的半径为200,然后分别显示两个圆的半径、面积和周长。

#include

using namespace std;

class Circle{

public:

Circle(double r);

double area();

double perimeter();

void show();

private:

double radius;

const double PI;

};

Circle::Circle(double r):PI(3.14){

radius=r;

}

double Circle::area(){

return PI*radius*radius;

}

double Circle::perimeter(){

return 2*PI*radius;

}

void Circle::show(){

cout<

}

int main()

{

Circle c1(100),c2(200);

c1.show();

c2.show();

return 0;

}

2.编一个程序,程序中包含以下内容:

(1)一个学生类(Student),包含:

属性:学号s_No,姓名s_Name,性别s_Sex,年龄s_Age,成绩s_Score。

方法:构造方法;显示学号、姓名、性别、年龄及成绩的方法show(),修改成绩的

方法modifyScore()。

(2)普通方法int max(Student* pStu),求出所有学生的最高分。

(3)主方法main(),在其中创建5个学生的对象数组stu,然后调用max()方法求出这5个学生的最高分并输出其学号和成绩。

#include

#include

using namespace std;

class Student{

public:

Student(string no,string name,string sex,int age,int score);

void show();

void modifyScore(int newScore);

string s_No;

string s_Name;

string s_Sex;

int s_Age;

int s_Score;

};

Student::Student(string no,string name,string sex,int age,int score){

s_No=no;

s_Name=name;

s_Sex=sex;

s_Age=age;

s_Score=score;

}

int max(Student* pStu,int n){

int ms=pStu[0].s_Score;

for(int i=1;i

if(ms

ms=pStu[i].s_Score;

}

return ms;

}

void Student::show(){

cout<

}

void Student::modifyScore(int newScore){

s_Score=newScore;

}

int main(){

Student stu[5]={

Student("100A","Zhangsan","Male",18,85),Student("100A","Zhangsan","Male",18,85),

Student("100A","Zhangsan","Male",18,95),Student("100A","Zhangsan","Male",18,85), Student("100A","Zhangsan","Male",18,85)

};

cout<

return 0;

}

1.编写一个人类Person,其中包含姓名、性别和年龄的属性,包含构造方法以及显示姓名、性别和年龄的方法。再编写一个学生类Student,它继承Person类,其中包含学号属性,包含构造方法以及显示学号的方法。最后编写main()函数,在main()函数中定义两个学生s1和s2并给他们赋值,最后显示他们的学号、姓名、性别以及年龄。

#include

#include

using namespace std;

class Person{

public:

Person(string n,string s,int a){

name=n;

sex=s;

age=a;

}

void show(){

cout<

}

private:

string name;

string sex;

int age;

};

class Student:public Person{

public:

Student(string n,string s,int a,string id);

void show();

private:

string stuID;

};

Student::Student(string n,string s,int a,string id):Person(n,s,a){

stuID=id;

}

void Student::show(){

Person::show();

cout<

}

int main(){

Student s1("zhangsan","male",21,"123456");

s1.show();

return 0;

}

2.编一个程序,包含以下内容:

(1)Point类,该类放在两个文件中(Point.h, Point.cpp),该类包含x和y两个坐标,构造方法。

(2)Circle类,该类放在两个文件中(Circle.h, Circle.cpp)该类继承Point类,其中包含:

属性:圆半径radius。

方法:构造方法;求面积方法area();求周长方法perimeter()。

(3)圆柱体类(Cylinder),继承圆类,其中包含:

属性:园柱体高度height。

方法:构造方法;求表面积方法area();求体积方法volume();显示圆心点坐标,底圆面积和周长以及圆柱体表面积和体积的方法show()。

(4)主方法main(),在主方法中创建两个圆柱体类的对象cy1和cy2,具体尺寸自己确定,然后分别显示圆柱体cy1和cy2圆心点坐标,底圆面积和周长以及圆柱体表面积和体积。

#include

using namespace std;

class Point{

public:

Point(int xx,int yy);

void show();

private:

int x;

int y;

};

Point::Point(int xx,int yy){

x=xx;

y=yy;

}

void Point::show(){

cout<

}

class Circle:public Point{

public:

Circle(int xx,int yy,int r);

double area();

double perimeter();

void show();

private:

int radius;

Circle::Circle(int xx,int yy,int r):Point(xx,yy){

radius=r;

}

double Circle::area(){

return 3.14*radius*radius;

}

double Circle::perimeter(){

return 2*3.14*radius;

}

void Circle::show(){

Point::show();

cout<

class Cylinder:public Circle{

public:

Cylinder(int xx,int yy,int r,int h);

double area();

double volume();

void show();

private:

int height;

};

Cylinder::Cylinder(int xx,int yy,int r,int h):Circle(xx,yy,r){ height=h;

}

double Cylinder::area(){

return 2*Circle::area()+Circle::perimeter()*height;

}

double Cylinder::volume(){

return Circle::area()*height;

}

void Cylinder::show(){

Circle::show();

cout<

}

int main()

{

Cylinder cy1(10,20,100,50),cy2(100,200,1000,500);

cy1.show();

cy2.show();

return 0;

1.编写一个复数类Complex,其中包含私有整形变量real和imag,构造函数以及显示属性

的函数show(),实现两个复数进行+、-、*、/的运算符重载友元函数,实现前缀++和—的成员函数。

#include

class complex {

friend complex operator+(complex&,complex&);

friend complex operator-(complex&,complex&);

public:

complex(double =0,double =0);

void show();

complex operator++();

complex operator--();

private:

double real;

double image;

};

complex::complex(double r,double i){

real=r;

image=i;

}

void complex::show(){

if(image>0)

cout<

else if(image<0)

cout<

else

cout<

}

complex complex::operator++(){

++real;

++image;

return *this;

}

complex complex::operator--(){

--real;

--image;

return *this;

}

complex operator+(complex&temp1,complex&temp2){

complex temp;

temp.real=temp1.real+temp2.real;

temp.image=temp1.image+temp2.image;

return temp;

complex operator-(complex&temp1,complex&temp2){

complex temp;

temp.real=temp1.real-temp2.real;

temp.image=temp1.image-temp2.image;

return temp;

}

int main(){

complex cc1(178.26,59.65),cc2(23.6,10.25),cc3,cc4,cc5(21.456,0);

cc1.show();

cc2.show();

cc3=cc1+cc2;

cc4=cc1-cc2;

++cc3;

++cc4;

cc3.show();

cc4.show();

cc5.show();

return 0;

}

1定义基类Base,其数据成员为高h,定义成员函数disp()为虚函数。然后,再由基类派生出长方体类Cuboid与圆柱体类Cylinder。并在两个派生类中定义成员函数disp()。在主函数中,用基类Base定义指针变量pc,然后用指针pc动态调用基类与派生类中的虚函数disp(),显示长方体与圆柱体的体积

#include

using namespace std;

//////////////////////////

class Base{

public:

Base(int height){

h=height;

}

virtual void disp(){

cout<

}

protected:

int h;

};

/////////////////////////

class Cuboid:public Base{

public:

Cuboid(int length,int width,int height):Base(height){

l=length;

w=width;

}

int volume(){

return l*w*h;

}

void disp(){

cout<<"Cuboid volume: "<

}

private:

int l;

int w;

};

////////////////////////

class Cylinder:public Base{

public:

Cylinder(int radius,int height):Base(height){

r=radius;

}

double volume(){

return 3.14*r*r*h;

}

void disp(){

cout<<"Cylinder volume: "<

}

private:

int r;

};

int main()

{

Base *pc;

pc=new Base(10);

pc->disp();

pc=new Cuboid(20,30,40);

pc->disp();

pc=new Cylinder(50,60);

pc->disp();

return 0;

}

2编写一个函数模板,求数组中的最大值,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整数,也可以是双精度类型。

#include

using namespace std;

template

T max(T arr[], int n){

T temp=arr[0];

for(int i=1;i

if(temp

temp=arr[i];

}

return temp;

}

int main()

{

int a1[]={20,33,50,-25,8,99,-24};

double a2[]={120,330,-50,12.5,7.8,99,-12.4,33,66,51,4.4};

cout<

return 0;

}