/*
题目63:编写C++程序完成以下功能:
(1)声明一个纯虚函数类Shape(形状),其中包含来计算面积、计算周长的方法;
(2)从Shape派生两个类矩形和圆形;
(3)从矩形派生正方形;
(4)分别实现派生类构造函数、析构函数和其他方法;
(5)创建派生类的对象,观察构造函数、析构函数调用次序;
(6)利用抽象类做函数参数(基类指针指向子类对象,多态特性),计算不同对象的面积和周长。 */ #define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std; #define PI 3.14 //形状类
class Shape{
public:
//计算面积
virtual double ComputeArea() = ;
//计算周长
virtual double ComputePerimeter() = ;
//返回名称
virtual char* PrintName() = ;
}; //圆类
class Circle :public Shape{
public:
Circle(int r){
this->r = r;
}
virtual char* PrintName(){
return "圆";
}
//计算面积
virtual double ComputeArea(){
return PI*r*r;
}
//计算周长
virtual double ComputePerimeter(){
return * PI*r;
}
private:
int r;
}; //矩形类
class Rectangle :public Shape{
public:
Rectangle(int w,int h){
width = w;
height = h;
}
virtual char* PrintName(){
return "矩形";
}
//计算面积
virtual double ComputeArea(){
return width*height;
}
//计算周长
virtual double ComputePerimeter(){
return * (width+height);
}
protected:
int width;
int height;
}; //正方形类
class Square :public Rectangle{
public:
Square(int edge) :Rectangle(edge, edge){}
virtual char* PrintName(){
return "正方形";
}
}; void ProtectA(Shape *sp){
printf("%s的面积是%f\n", sp->PrintName(), sp->ComputeArea());
printf("%s的周长是%f\n", sp->PrintName(), sp->ComputePerimeter());
} void main(){
//定义圆对象
Circle c1();
ProtectA(&c1);
//定义矩形对象
Rectangle r1(, );
ProtectA(&r1);
//定义正方形对象
Square sq1();
ProtectA(&sq1);
printf("程序执行完毕!\n");
system("pause");
}

C语言 百炼成钢27的更多相关文章

  1. C语言 百炼成钢19

    /* 题目55: 有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果 1) 以逗号分割字符串, ...

  2. C语言 百炼成钢9

    //题目25:求1+2!+3!+...+20!的和 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib ...

  3. C语言 百炼成钢3

    //题目7:用*号输出空心菱形图案 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...

  4. C语言 百炼成钢2

    //题目4:输入某年某月某日,判断这一天是这一年的第几天? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<st ...

  5. C语言 百炼成钢1

    //题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> ...

  6. C语言 百炼成钢18

    //题目52:用递归打印以下图形 //* //*.*. //*..*..*.. //*...*...*...*... //*....*....*....*....*.... #include<s ...

  7. C语言 百炼成钢17

    //题目49:老师将糖果分成若干份,让学生按任意次序领取,第一个领取的,得到1份加上剩余糖果的1/10, //第二个领取的,得到2份加上剩余糖果的1/10,第三个领取的,得到3份加上剩余糖果的1/10 ...

  8. C语言 百炼成钢16

    //题目46:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只 //猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 //一个,它同样把 ...

  9. C语言 百炼成钢15

    //题目43:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出 //圈子,问最后留下的是原来第几号的那位. #include<stdio.h> #inclu ...

随机推荐

  1. STL源码剖析(heap)

    STL heap并不是容器,而是一系列的算法. 这些算法接受RandomAccessIterator[start, end),并将其表述成一棵完全二叉树. 关于heap算法可以参考之前算法导论的一篇博 ...

  2. FAT AP v200R005 配置二层透明模式(web&命令行,开局)

    背景: vlan123:用户业务vlan,192.168.1.0/24 Vlan2001:管理vlan,172.168.129.0/24 vlan1:默认vlan,不建议使用. 注意事项: 配置服务集 ...

  3. NoSQL(三)

    redis集群介绍 1.官方叫cluster,redis3.0才直接的一个架构,如果数据量很大,单台机器已经无法满足存储,查询的瓶颈,所以我们需要多台机器构成一个大集群,用来解决存储空间,查询速度,负 ...

  4. Python sklearn 分类效果评估

    https://blog.csdn.net/sinat_26917383/article/details/75199996

  5. 在Linux下如何查CC攻击?

    什么是CC攻击?CC攻击就是利用大量代理服务器对目标计算机发起大量连接,导致目标服务器资源枯竭造成拒绝服务.那么如何判断查询CC攻击呢?本文主要介绍了一些Linux下判断CC攻击的命令. AD:201 ...

  6. Mac 學習系列之Python Challenge 11-20

    11.给你一个正整数列表 L, 如 L=[2,8,3,50], 输出L内全部数字的乘积末尾0的个数, 如例子L的结果为2.(提示:不要直接相乘,数字非常多,可能溢出) Answer: n_2 = 0 ...

  7. 单元测试时使用Ninject的小问题

    主要是Kernel没有被释放,Ninject的Kernel必须调用IDispose释放.也有可能是静态类型在VS单元测试时无法被释放. 先记录下这个问题

  8. Catalog的种类

    框架中的Catalog 在MEF框架中,包含了4种Catalog,所有的Catalog的是从System.ComponentModel.Composition.Primitives名称空间下的Comp ...

  9. Java创建多线程的三种方法

    Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...

  10. 40. Implement Queue by Two Stacks【medium】

    As the title described, you should only use two stacks to implement a queue's actions. The queue sho ...