1.设有下面关于点Point类的定义,请在此基础上派生出一个矩形Rectangle类,用以描述矩形的左上角的顶点和右下角的顶点,并能够计算矩形的面积,并给出测试程序。
class Point
{public:
Point(int a,int b){ x=a; y=b;}
Point(){x=0;y=0;}
int GetY(){return y;}
int GetX(){return x;}
void SetY(int b){ y=b;}
void SetX(int a){ x=a;}
private:
int x;
int y;
};
class Point
{
public:
Point(int a, int b) { x = a; y = b; }
Point() { x = 0; y = 0; }
int GetY() { return y; }
int GetX() { return x; }
void SetY(int b) { y = b; }
void SetX(int a) { x = a; }
private:
int x;
int y;
};
class Rectangle :public Point
{
public:
Rectangle(int x1, int y1, int x2, int y2) :p1(x1, y1), p2(x2, y2)
{
s = fabs((x1 - x2) * (y1 - y2));
}
void display()
{
cout << "左上角顶点为(" << p1.GetX() << "," << p1.GetY() << ")" << endl;
cout << "右下角顶点为(" << p2.GetX() << "," << p2.GetY() << ")" << endl;
cout << "面积是: " << s;
}
private:
Point p1, p2;
int s;
};
int main()
{
Rectangle rectangle(1, 1, 5, 5);
rectangle.display();
return 0;
}
2.设计一个圆类Circle和一个桌子类Table,另设计一个圆桌类Roundtable,它是前面两个类的派生类,要求编写测试程序给出输出一个圆桌的高度、面积和颜色等数据。
#include
#include
#define _CRT_SECURE_NO_WARNINGS //这个宏定义最好要放到.c文件的第一行
#pragma warning(disable:4996)
#include
#define PI 3.14
class Circle
{
private:
double radius;
public:
Circle(double r = 0)
{
radius=r;
}
double Area()
{
return PI * radius * radius;
}
};
class Table
{
public:
Table(double h)
{
height = h;
}
double GetH()
{
return height;
}
private:
double height;
};
class Roundtable :public Circle, public Table
{
public:
Roundtable(double radius, double h,const char* c)
:Circle(radius), Table(h)
{
color = c;
}
string GetC()
{
return color;
}
private:
string color;
};
int main()
{
Roundtable A(5.6, 0.9, "blue");
cout << "the Basic information of the roundtable : " << endl;
cout << "面积 : " << A.Area() << endl;
cout << "高度 : " << A.GetH() << endl;
cout << "颜色 : " << A.GetC() << endl;
}
3.下面的程序可以输出ASCII字符与所对应的数字的对照表。修改下列程序,使其可以输出字母a 到z与所对应的数字的对照表。
#include
#include
#include
using namespace std;
class Table
{
public:
Table(int p)
{
i=p;
}
void ascii( );
protected :
int i;
};
void Table::ascii( )
{
int k=1;
for (; i<127; i++)
{
cout< if ((k)%12==0) cout<<"\n"; k++; } cout<<"\n"; } class Der_table:public Table { public: Der_table(int p,char *m):Table(p) { c = new char[strlen(m) + 1]; strcpy(c, m); } void print( ); protected: char *c; }; void Der_table::print( ) { cout< Table::ascii(); } int main() { Der_table ob1(32,"ASCII value---char"); ob1.print(); return 0; } 提示:修改后的main测试函数为: int main() { Der_table ob('a','z',"ASCII value---char"); ob.print(); return 0; } 4.编写一个求出租车收费的程序,输入起始站、终止站和路程。 计费标准为:3 公里以内10元,3 公里以后每1公里加 2 元,超过 15 公里,每公里加 3元。 要求:设计一个站类Station(用于设置起始站、终止站)和路程类Mile(用于设置路程),由这两个类派生出收费类Price(用于计费)。 已知Station类和Mile类以及测试main函数如下,请编写Price类。 (可以使用string类型代替给出代码中的字符数组。) #define Max 20 class Station {public: Station() { strcpy(from," "); strcpy(to," "); } Station(char f[],char t[]) { strcpy(from,f); strcpy(to,t); } void getdata() { cout<<"输入起始站终止站:"; cin>>from>>to; } void disp() { cout<<"从"< } protected: char from[Max]; char to[Max]; }; class Mile { public: Mile(){mile=0;} Mile(double m){mile=m;} void getdata() { cout<<"输入里程:"; cin>>mile; } void disp() { cout<<"是"< } protected: double mile; }; int main() { Price A; //乘车, A.getdata(); //输入起始站和终点站 Price B("理工大学","中山公园",20); //乘车,有起始站和终点站 //A和B是Price的两种初始化方式。20是路程数。 cout<<"输出结果:"< A.disp(); //输出此次乘车价格 B.disp(); //输出此次乘车价格 return 0; } 5.设计一个小猫钓鱼的游戏程序。基本需求如下: (1)每个小猫有自己的等级(level)和经验分(exp),每累计获得500经验分,就升一级,同时经验分清0; (2)小猫每次只能钓一条鱼,如果钓上一条章鱼(Octopus),经验分的增加值为 2*章鱼的重量;如果钓上一条鲸鱼(Whale),经验分增加200;如果钓上一个金龟(Turtle),则等级直接升一级;如果钓上来一条鲨鱼(Shark),则在等级不变的前提下减少经验分(至多减至0),减少值为5*鲨鱼的重量。考虑到游戏的趣味性,将来可能还要增加其他类型的鱼以及相应的奖励或惩罚方法。 请根据上面的模型描述,制定合理的设计方案,请完整定义并实现小猫类,其中类的成员至少要有一个成员函数CatchFish,用来体现小猫钓鱼的行为过程。同时设计Fish类,使用继承机制从其派生出具体的鱼类。#include
#include
#include