源码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
CalOprs co = new CalOprs();
co.GetOpr("3+2");
co.GetOpr("3*2");
co.GetOpr("3-2");
co.GetOpr("3/2");
}
}
interface Icalt
{
double CalResult();
}
class Cal : Icalt
{
private double op1;
private double op2;
public double Op1
{
get {
return op1;
}
set {
op1 = value;
}
}
public double Op2
{
get
{
return op2;
}
set
{
op2 = value;
}
}
public Cal() {
this.op1 = 0;
this.op2 = 0;
}
public Cal(double op1, double op2)
{
this.op1 = op1;
this.op2 = op2;
}
public virtual double CalResult()
{
return 0;
}
}
class CalAdd : Cal { public CalAdd() : base()
{ }
public CalAdd(double op1, double op2) :base(op1,op2)
{ }
public override double CalResult()
{
return this.Op1 + this.Op2;
}
}
class CalSub : Cal
{ public CalSub()
: base()
{ }
public CalSub(double op1, double op2)
: base(op1, op2)
{ }
public override double CalResult()
{
return this.Op1 - this.Op2;
}
}
class CalMul : Cal
{ public CalMul()
: base()
{ }
public CalMul(double op1, double op2)
: base(op1, op2)
{ }
public override double CalResult()
{
return this.Op1 * this.Op2;
}
}
class CalDiv : Cal
{ public CalDiv()
: base()
{ }
public CalDiv(double op1, double op2)
: base(op1, op2)
{ }
public override double CalResult()
{
return this.Op1 / this.Op2;
}
}
class CalOprs {
public Cal GetOpr(string s) {
int i=0;
char op=' ';
for (; i < s.Length; i++)
{
if (!(s.ElementAt(i) >= '0' && s.ElementAt(i) <= '9'))
op = s.ElementAt(i);
}
Cal ca = new Cal();
ca.Op1 = double.Parse(s.Split(op)[0]);
ca.Op2 = double.Parse(s.Split(op)[1]);
switch (op) {
case '+':
CalAdd caa = new CalAdd(ca.Op1, ca.Op2);
Console.WriteLine("{0}",caa.CalResult());
break;
case '-':
CalSub cas = new CalSub(ca.Op1, ca.Op2);
Console.WriteLine("{0}", cas.CalResult());
break;
case '*':
CalMul cam = new CalMul(ca.Op1, ca.Op2);
Console.WriteLine("{0}", cam.CalResult());
break;
case '/':
CalDiv cad = new CalDiv(ca.Op1, ca.Op2);
Console.WriteLine("{0}", cad.CalResult());
break;
}
return ca;
}
}
}

C#上机实验(三)的更多相关文章

  1. 【C#】上机实验三

    实验1: 定义一个 TimePeiod 类 包含: hour , minute , second 实现时间的在 时分秒上的加法. using System; using System.Collecti ...

  2. 《Java语言程序设计》上机实验

    实验一   Java环境演练   [目的] ①安装并配置Java运行开发环境: ②掌握开发Java应用程序的3个步骤:编写源文件.编译源文件和运行应用程序: ③学习同时编译多个Java源文件. [内容 ...

  3. 实验三 CC2530平台上CC2530平台上定时器组件的

    实验三 CC2530平台上CC2530平台上定时器组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS ...

  4. oracle上机实验内容

    这是oracle实验的部分代码,我花了一中午做的. 第一次上机内容 实验目的:熟悉ORACLE11G的环境 实验内容: 第二次上机内容 实验目标:掌握oracle体系结构,掌握sqlplus的运行环境 ...

  5. 软件测试技术lab2——Selenium上机实验

    Selenium上机实验说明 1.安装SeleniumIDE插件 2.学会使用SeleniumIDE录制脚本和导出脚本 3.访问http://121.193.130.195:8080/使用学号登录系统 ...

  6. 2019 SDN上机第三次作业

    2019 SDN上机第三次作业 实验一 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网络连通性 ...

  7. FPGA与simulink联合实时环路系列——实验三 按键key

    实验三 按键key 实验内容 在FPGA的实验中,经常涉及到按键的使用,按键是必不可少的人机交互的器件之一,在这些实验中,有时将按键的键值读取显示到数码管.LCD或者是通过串口传送到PC的串口助手上进 ...

  8. Java实验三

    20145113 20145102实验三 实验步骤 编码标准 编程标准包含:具有说明性的名字.清晰的表达式.直截了当的控制流.可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性 ...

  9. Verilog HDL那些事_建模篇笔记(实验三:按键消抖)

    实验三:按键消抖 首先将按键消抖功能分成了两个模块,电平检查模块和10ms延迟模块.电平检测模块用来检测按键信号的变化(是否被按下),10ms延迟模块用来稳定电平检查模块的输入,进而稳定按键信号,防止 ...

  10. 20145229&20145316 《信息安全系统设计基础》实验三 实时系统的移植

    实验封面 实验内容 1.安装ADS(安装文件在00-ads1.2目录下,破解方法00-ads1.2\Crack目录下) 2.安装GIVEIO驱动(安装文件在01-GIVEIO目录下) 3.把整个GIV ...

随机推荐

  1. 微信公众号 webfullstack

    微信公众号 webfullstack weixin refs https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_C ...

  2. Alexa website ranking

    Alexa website ranking The top 500 sites on the web https://www.alexa.com/topsites https://www.alexa. ...

  3. macOS & timer & stop watch

    macOS & timer & stop watch https://matthewpalmer.net/blog/2018/09/28/top-free-countdown-time ...

  4. macOS & wifi & ip

    macOS & wifi & ip mac show wifi ip # wireless ipconfig getifaddr en1 # ethernet ipconfig get ...

  5. 解析js字符串

    myEval export const evalExp = /[!\&\|\+\-\*\%=\/<\>\^\(\)\~\:\?\;]/g; export function myEv ...

  6. django学习-16.返回给前端页面数据为json数据类型的3种方案

    目录结构 1.前言 2.JsonResponse类的源码简单分析 2.1.JsonResponse类的源码如下所示 2.2.JsonResponse类的构造函数里的每个入参的大概含义和作用 3.[方案 ...

  7. Dyno-queues 分布式延迟队列 之 生产消费

    Dyno-queues 分布式延迟队列 之 生产消费 目录 Dyno-queues 分布式延迟队列 之 生产消费 0x00 摘要 0x01 前情回顾 1.1 设计目标 1.2 选型思路 0x02 产生 ...

  8. 用一次就会爱上的cli工具开发

    本文转载自用一次就会爱上的cli工具开发 写在前面 最近接手任务--使用nodejs开发一个公司内部使用的cli工具,简而言之就是输入一行命令快速搭建好项目结构,也可以通过不同的命令引入不同的文件. ...

  9. 物联网网关开发:基于MQTT消息总线的设计过程(上)

    道哥的第 021 篇原创 目录 一.前言 二.网关的作用 2.1 指令转发 2.2 外网通信 2.3 协议转换 2.4 设备管理 2.5 边沿计算(自动化控制) 三.网关内部进程之间的通信 3.1 网 ...

  10. HTTP/1.1报文详解

    本文为<三万长文50+趣图带你领悟web编程的内功心法>第三个章节. 3.HTTP/1.1报文详解 在RFC2616中心详细的描述了HTTP/1.1[1]的报文,感兴趣的朋友也可以前往阅读 ...