/*
题目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. DevExpress 编译成功的 dll

    DevExpress 编译成功的 dll 附注册方法 其它的有些文件没有,如: DevExpress.EasyTest 这个程序集找不到 希望有的朋友可以分享一下, 安装程序集 通常,将程序集安装到G ...

  2. SQL Server 2008 R2 清空数据库中ldf日志文件

    /************************************************************ * Sql Server 2008 R2 清空数据库中ldf日志文件 * 将 ...

  3. 主动通知Android系统图库进行更新

    项目中遇到调用图库进行图片的选择,因为不能主动及时更新,遂实现代码调用实现主动及时更新. 废话不多刷,看代码. 方式一,发送一个广播, sendBroadcast(new Intent(Intent. ...

  4. 制作mac U盘启动

    之前在windows电脑上装系统,U盘,光盘都可以! 当然在mac电脑上也是可以的! 公司电脑mac mini 没有光驱,只有用U盘装了!折腾了一天,就是做不上10.9的U盘启动,最后发现是,10.9 ...

  5. okhttp-OkGo的文件下载模块

    OkDownload主要功能 结合OkGo的request进行网络请求,支持与OkGo保持相同的配置方法和传参方式 支持断点下载,支持突然断网,强杀进程后,继续断点下载 每个下载任务具有无状态.下载. ...

  6. Android app启动耗时分析

    前言 app启动耗时过长的话,无论你的app里面的内容多么丰富有趣,作为一个用户,首先是没有耐心去等待的,如果我是一个用户,我会这样想:这是什么垃圾公司出的什么烂app,再等2s不进来就卸载,黑人问号 ...

  7. 从零開始开发Android版2048 (三)逻辑推断

    近期工作比較忙,所以更新的慢了一点,今天的主要内容是关于Android版2048的逻辑推断,经过本篇的解说,基本上完毕了这个游戏的主体部分. 首先还是看一下,我在实现2048时用到的一些存储的数据结构 ...

  8. C++11 std::async 包装实体店::packaged_task

    更好的方式 C++11中提供了操作多线程的高层次特性. std::packaged_task 包装的是一个异步操作,相当与外包任务,好比我大阿里把电话客服外包给某某公司. std::future 提供 ...

  9. Layui 弹出层组件——layer的模块化开发实例应用

    Layui 弹出层组件——layer的模块化开发实例应用 1.首先在package.json中引入layer组件依赖 2.在源码中应用这个依赖 3.在源码中编写代码应用此组件 4.效果验证:点击日历上 ...

  10. javascript开源大全

    javascript开源大全 Ajax框架-jQuery 可视化HTML编辑器-CKEditor 国产jQuery-UI框架-(jUI)-DWZ 网页开发FireFox插件-Firebug 服务器端的 ...