/*
题目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. LoadRunner访问 Mysql数据库

    这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...

  2. webSQL 实现即时通讯

    websql存储方式一共有以下几个方法 openDatabase:这个方法使用现有的数据库或新建数据库来创建数据库对象. transaction:这个方法允许我们执行事务处理; executeSql: ...

  3. UVA 10168 Summation of Four Primes(数论)

    Summation of Four Primes Input: standard input Output: standard output Time Limit: 4 seconds Euler p ...

  4. fwrite和fread函数的用法小结(转)

    fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出. #include <stdio.h> size_t fread(void * ...

  5. js实现页面元素随着内容的滚动而滚动

      CreateTime--2017年9月4日16:55:06 Author:Marydon js实现页面元素随着内容的滚动而滚动 分析: CSS样式,使用绝对定位确定好页面元素在屏幕的位置(如:正中 ...

  6. Drupal启动阶段之四:系统变量

    Drupal的系统变量是指保存在后台数据库variable表中的一些参数设置,透过variable_get()和variable_set()存取: 先看一看_drupal_bootstrap_vari ...

  7. 安装 Tomcat

    安装 Tomcat(.exe)  而 .rar文件则只需解压即可使用. 点击 apache-tomcat-7.0.55.exe 进行安装: 在“Configuration”: Server Shutd ...

  8. 《转》oracle—flashback

    FLASHBACK介绍 在介绍flashback之前先介绍下undo_retention相关参数 undo_retention:表示undo数据的过期时间.系统默认这个时间设置为900即15分钟.但要 ...

  9. linuxubuntu升级.net core版本到2.0

    直接看这里 https://www.microsoft.com/net/core#linuxubuntu

  10. SQL中intersect、union、minus和except 运算符

    1.intersect运算符intersect运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表.当 ALL 随 INTERSECT 一起使用时 (inte ...