计算机程序设计C++(第12周基础练习)

计算机程序设计C++ MOOC

测试与作业C++基础练习100题

##第十二周基本练习

本周内容C++中的多态性

  1. 形状类虚函数
    在这里插入图片描述
#include <iostream>

using namespace std;

class SHAPE
{
private:
	double x, y;
public:
	SHAPE(double x = 0, double y = 0) :x(x), y(y){};
	void set(double x, double y){ this->x = x; this->y = y; }
	virtual double area(){ return 0; };
};

class CIRCLE :public SHAPE
{
private:
	double radius;
public:
	CIRCLE(double x = 0, double y = 0, double r = 0) :SHAPE(x, y), radius(r){};
	void set(double x, double y, double r){ SHAPE::set(x, y); radius = r; };
	double area(){ return 3.14*radius*radius; }
};

int main()
{
	SHAPE sp(1, 2);
	CIRCLE c(3, 4, 5);
	SHAPE *p;
	SHAPE &sp2 = c;
	p = &sp;
	cout << p->area() << endl;
	p = &c;
	cout << p->area() << endl;
	cout << sp2.area() << endl;
	return 0;
}
  1. 形状类纯虚函数
    在这里插入图片描述
#include <iostream>

using namespace std;

class SHAPE
{
private:
	double x, y;
public:
	SHAPE(double x = 0, double y = 0) :x(x), y(y){};
	void set(double x, double y){ this->x = x; this->y = y; }
	virtual double area() = 0;
};

class CIRCLE :public SHAPE
{
private:
	double radius;
public:
	CIRCLE(double x = 0, double y = 0, double r = 0) :SHAPE(x, y), radius(r){};
	void set(double x, double y, double r){ SHAPE::set(x, y); radius = r; };
	double area(){ return 3.14*radius*radius; }
};

int main()
{
	CIRCLE c(3, 4, 5);
	SHAPE *p;
	SHAPE &sp2 = c;
	p = &c;
	cout << p->area() << endl;
	cout << sp2.area() << endl;
	return 0;
}
  1. 三维空间向量类重载加法运算
    在这里插入图片描述
#include <iostream>

using namespace std;

class VECTOR3D
{
private:
	double x, y, z;
public:
	VECTOR3D(double a = 0, double b = 0, double c = 0) :x(a), y(b), z(c){};
	void set(double a, double b, double c){ x = a; y = b; z = c; }
	void show()
	{
		cout << '(' << x << ' ' << y << ' ' << z << ')';
	}
	VECTOR3D operator + (VECTOR3D);
};

VECTOR3D VECTOR3D::operator +(VECTOR3D a)
{
	VECTOR3D temp;
	temp.x = x + a.x;
	temp.y = y + a.y;
	temp.z = z + a.z;
	return temp;
}

int main()
{
	VECTOR3D a(1, 2, 3), b(3, 4, 5), c;
	double x, y, z;

	a.show();
	cout << endl;
	b.show();
	cout << endl;
	c.show();
	cout << endl; 

	cin >> x >> y >> z;
	b.set(x, y, z);
	c = a + b;

	a.show();
	cout << endl;
	b.show();
	cout << endl;
	c.show();
	cout << endl;
	return 0;
}
  1. 复数类重载乘法

在这里插入图片描述

#include <iostream>

using namespace std;

class COMPLEX
{
private:
	double real, imag;
public:
	COMPLEX(double r = 0, double i = 0) :real(r), imag(i){};
	void set(double r, double i){ real = r; imag = i; }
	void show()
	{
		if (imag>=0)
		cout << real << '+' << imag << 'j';
		else
		cout << real << '-' << -imag << 'j';
	}
	COMPLEX operator *(COMPLEX);
};

COMPLEX COMPLEX::operator * (COMPLEX a)
{
	COMPLEX temp;
	temp.real = real*a.real - imag*a.imag;
	temp.imag = imag*a.real + real*a.imag;
	return temp;
}

int main()
{
	COMPLEX a(1, 2), b(3, 4), c;
	double x, y;
	
	a.show();
	cout << endl;
	b.show();
	cout << endl;
	c.show();
	cout << endl;

	cin >> x >> y ;
	b.set(x, y);
	c = a * b;

	a.show();
	cout << endl;
	b.show();
	cout << endl;
	c.show();
	cout << endl;
	return 0;

}

以上为第十二周的基础练习。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、 一个三维向量类,并定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、-),实现该类对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现)。 2、 编程实现如下功能: (1)定义一个抽象类Shape,在抽象类 Shape中定义求面积 getArea()和长 getPerimeter()的抽象方法。 (2)分别定义继承抽象类Shape的3个子类即Triangle、Rectangle、和Circle,在这3个子类中重写 Shape中的方法getArea()和 getPerimeter( )。 (3)创建类Triangle、 Rectangle、 Circle的对象,对3个类中的方法进行调用测试。 3、使用第六章(王雷春版)介绍的知识设计一个“书籍出租管理系统”,该系统包括以下功能。 (1) 菜单项“1”:显示书籍(包括书籍名称、价格和借出状态)。 (2) 菜单项“2”:增加书籍(包括书籍名称和价格)。 (3) 菜单项“3”:借出书籍(包括借出书籍名称和借出天数)。 (4) 菜单项“4”:归还书籍(包括归还书籍名称和应付的租书费)。 (5) 菜单项“5”:统计书籍(包括借出书籍册数、未借出书籍册数和总册数)。 (6) 菜单项“-1”:退出系统。 体会利用面向对象编程的思想。 4、设计一个“超市进销存管理系统”,要求如下: (1)系统包括7种操作,分别是:1查询所有商品;2添加商品;3修改商品;4.删除商品;5卖出端口;6.汇总;-1.退出系统。 (2)选择操作序号“1”,显示所有商品 (3)选择操作序号“2”,添加新的商品(包括商品名称、数量和进货价格)。 (4)选择操作序号“3”,修改商品 (5)选择操作序号“4”,删除商品 (6)选择操作序号“5”,卖出商品(包括商品名称、数量和售出价格)。 (7)选择操作序号“6”,汇总当天卖出商品,包括每种销售商品名称、数量、进货总价、销售总价等。 (8)选择操作序号“-1”,退出系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值