编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出

(1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea。分别进行初始化、获取边长和面积,其返回值均为 decimal。接口 IDisplayresult 显示计算结果。

(2) 编写两个类,Square(正方形)和 Circle(圆形),实现 IShape 和 IDisplayresult接口。

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Lab06_2
{
public interface Ishape {
void initialize();
decimal getPerimeter();
decimal getArea();
}
public interface IDisplayresult {
void showResult(); }
public class Square:Ishape,IDisplayresult{
decimal l;
public void initialize() {
Console.WriteLine("请输入正方形边长:");
do
{
l = decimal.Parse(Console.ReadLine());
if (l <= 0)
{
Console.WriteLine("输入数据错误,请重新输入:");
}
} while (l <= 0);
}
public decimal getPerimeter()
{
return 4*l;
}
public decimal getArea()
{
return l*l;
}
public void showResult()
{
Console.WriteLine("该正方体的周长:{0}",getPerimeter());
Console.WriteLine("该正方体的面积:{0}", getArea());
}
}
public class Circle : Ishape, IDisplayresult
{
static decimal pi = 3.14M;
decimal r;
public void initialize()
{
Console.WriteLine("请输入圆形的半径:");
do
{
r = decimal.Parse(Console.ReadLine());
if (r <= 0)
{
Console.WriteLine("输入数据错误,请重新输入:");
}
} while (r <= 0);
}
public decimal getPerimeter()
{
return 2*r*pi;
}
public decimal getArea()
{
return pi * r * r;
}
public void showResult()
{
Console.WriteLine("该圆形的周长:{0}", getPerimeter());
Console.WriteLine("该圆形的面积:{0}", getArea());
}
}
class Program
{
static void Main(string[] args)
{
int i;
Square sq=new Square();
Circle cr=new Circle();
do
{
Console.WriteLine("请选择 1:正方形 2:圆形 3:退出");
i = int.Parse(Console.ReadLine());
switch (i)
{
case 1: sq.initialize(); sq.showResult(); break;
case 2: cr.initialize(); cr.showResult(); break;
case 3: Console.WriteLine("感谢您的使用!!!"); break;
default: Console.WriteLine("输入数据错误,请重新输入:"); break;
}
Console.Write("\n请按任意键继续...");
Console.ReadKey();
Console.Clear();
} while (i !=3); }
}
}

运行结果:

最新文章

  1. norflash驱动编写笔记
  2. Service Broker应用(2):不同server间的数据传输,包含集群
  3. php版本引起的const问题
  4. object.bind()方法的低版本兼容
  5. ::after::before清除浮动原理
  6. &lt;转&gt;Hibernate的优、缺点(局限性)
  7. BZOJ 1087 题解【状压DP】
  8. wamp2.5虚拟站点建立
  9. sysbench测试服务器性能
  10. Linux 网卡驱动设备程序设计(1)
  11. mysql主从复制-linux版本
  12. 用Dockerfile构建docker image
  13. CodeIgniter学习一:基础知识
  14. 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
  15. oracle 树形表结构查询 排序
  16. 最新的极光推送服务器端代码(java服务器后台向手机端自定义推送消息)
  17. 【Flask】 使用Flask-Moment进行日期时间的管理
  18. Ubuntu18.04多个版本GCC编译器的切换
  19. 1、mysql初识
  20. python 数据分析库介绍

热门文章

  1. svelte组件:Svelte3自定义Navbar+Tabbr组件|svelte自定义插件
  2. Java编程学习笔记(基础篇)
  3. LGP6008题解
  4. 新建vue3.0 项目—步骤详细介绍
  5. Net Framework 中托管代码与非托管代码的区别
  6. ASP.NET Core 6 Minimal API的模拟实现
  7. 4月2日 python学习总结
  8. 程序语言与编程实践4-&gt; 蓝桥杯C/C++备赛记录2 | 第二周学习训练
  9. S2-045(RCE远程代码执行)
  10. [转载]详解ssh端口转发(二)