为应付考试的c#计算器程序主要代码 :
using System;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace caculator
{
    public partial class caculator1 : Form
    {
        String op1,op2;           //定义两个操作数
        bool DecimalFlag;         //标识小数点是否存在
        int NumOps;               //记录操作数个数
        String LastInput;         //指示上一次按键事件的类型
        int OpFlag;               //指示将要进行的操作类型
        bool OperaterFlag;        //指示是否已经进行过操作
        String TempReadout;
        public caculator1()
        {
            InitializeComponent();//初始化界面控件
        }
        private void caculator1_Load(object sender, EventArgs e)   //对变量进行初始化赋值
        {
            DecimalFlag = false;                 //小数点标志赋为false
            OperaterFlag = false;                //尚未进行过操作
            NumOps = 0;                          //操作数个数为
            LastInput = "NONE";
            OpFlag = 0;
            ReadOut.Text = "0.";                 //文本框中初始值为“.”
        }
        public void calculate(int MyNumber)            //接收操作数
        {
            if (!OperaterFlag)                         //判断是否点击过操作符,初始值为false  如果没有点击操作符
            {
                if (DecimalFlag)                       //判断是否点击过小数点,初始值为false   如果已经点击过小数点
                {
                    ReadOut.Text = ReadOut.Text + MyNumber;   //直接把点击的数字加在框中现有数据的后面  小数点后点击的数字直接追加
                }
                else                                       //未曾点击过小数点则进行如下操作  
                {
                    if (ReadOut.Text == "0.")          
                    {
                        ReadOut.Text = MyNumber + ".";      //如果输入框中此时为“0.”,则在输入数字的后面加上小数点,如此时输入,则显示“.”
                    }
                    Else   
                    {
                        ReadOut.Text = ReadOut.Text.Substring(0, ReadOut.Text.Length - 1) + MyNumber + ".";  //框中数据后面加上小数点
                    }
                }
            }
            else
            {
                ReadOut.Text = MyNumber + ".";     //点击过操作符之后,输入的数字后面仍然加个小数点(为了显示的一致性,即任何时候框中的数据都是*.)
            }
           // DecimalFlag = false;
            OperaterFlag = false;
        }
        private void sign_Click(object sender, EventArgs e)        //正负切换(+/-)
        {
            if (ReadOut.Text != "0.")          //此时框中的数值不为“0.”
            {
                if (LastInput == "NUMS")       //上次输入的数为正数
                {
                    LastInput = "NEG";             //把LastInput置为“NEG”,表明最后一次输入的数是负数
                    ReadOut.Text = "-" + ReadOut.Text;    //给文本框中的数值前添上“-”号
                }
                else if (LastInput == "NEG")     //如果上次输入为负数
                {
                    LastInput = "NUMS";         //把LastInput置为“NUMS”,表明最后一次输入的数是正数
                    ReadOut.Text = ReadOut.Text.Substring(1, ReadOut.Text.Length - 1);  //把框中的数据最前面的符号去掉(重新变成正数)
                }
                else                     //正常情况下默认此时文本框中的数值是正数,点击+/-后,变成负数
                {
                    LastInput = "NEG";
                    ReadOut.Text = "-" + ReadOut.Text;
                } 
            }  
            else
            {
                LastInput = "NUMS";      //为“0.”时的情况
            }
        }
        private void DecimalDot_Click(object sender, EventArgs e)      //小数点(.)
        {
            if (OperaterFlag == true)
            {
                ReadOut.Text = "0.";
            }
               DecimalFlag = true;
        }
        public void StandardizationShow(String s)                     //规范化显示
        {
            if (s.IndexOf(".") == -1)
            {
                ReadOut.Text = s + "."; 
            }
            else
            {
                ReadOut.Text=s;
            }
        }
        private void Number0_Click(object sender, EventArgs e)    //点击对应的数字键时调用方法
        {
            calculate(0);
        }
        private void Number1_Click(object sender, EventArgs e)
        {
            calculate(1);
        }
        private void Number2_Click(object sender, EventArgs e)
        {
            calculate(2);
        }
        private void Number3_Click(object sender, EventArgs e)
        {
            calculate(3);
        }
        private void Number4_Click(object sender, EventArgs e)
        {
            calculate(4);
        }
        private void Number5_Click(object sender, EventArgs e)
        {
            calculate(5);
        }
        private void Number6_Click(object sender, EventArgs e)
        {
            calculate(6);
        }
        private void Number7_Click(object sender, EventArgs e)
        {
            calculate(7);
        }
        private void Number8_Click(object sender, EventArgs e)
        {
            calculate(8);
        }
        private void Number9_Click(object sender, EventArgs e)
        {
            calculate(9);
        }
        public void OperatorCal(int MyOperator)                  //接收操作符
        {
            if(!OperaterFlag)             //判断以前是否单击过操作符,避免连击操作符错误
            {
                NumOps = NumOps + 1;  
            }
  
            switch (NumOps)
            {
                case 0:
                    OperaterFlag = true;
                    break;
                case 1:
                    op1 = ReadOut.Text;
                    OperaterFlag = true;
                    break;
                case 2:
                    op2 = ReadOut.Text;
                    switch (OpFlag)
                    {
                        case 1:
                            op1 = (Double.Parse(op1) + Double.Parse(op2)).ToString();  //加
                            break;
                        case 3:
                            op1 = (Double.Parse(op1) - Double.Parse(op2)).ToString();  //减
                            break;
                        case 2:
                            op1 = (Double.Parse(op1) * Double.Parse(op2)).ToString();//乘
                            break;
                        case 0:
                            if (Double.Parse(op2) == 0)                                //除
                            {
                                MessageBox.Show("除数不能为", "计算器");
                            }
                            else
                            {
                                try
                                {
                                    op1 = (Double.Parse(op1) / Double.Parse(op2)).ToString();
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine("Generic Exception Handler: {0}", e.ToString());
                                }
                            }
                            break;
                        case 4:
                            op1 = op2;                        //等                                               
                            break;
                    }
                    TempReadout = op1;
                    this.StandardizationShow(TempReadout);
                    NumOps = 1;
                    break;
            }
            if(NumOps!=0)
            {
                OpFlag = MyOperator;
            }
            OperaterFlag = true;
            DecimalFlag = false;                              
           // LastInput = "NUMS";
        }
        private void operator1_Click(object sender, EventArgs e)
        {
            OperatorCal(1);
        }
        private void operator3_Click(object sender, EventArgs e)
        {
            OperatorCal(3);
        }
        private void operator2_Click(object sender, EventArgs e)
        {
            OperatorCal(2);
        }
        private void operator0_Click(object sender, EventArgs e)
        {
            OperatorCal(0);
        }
        private void operator4_Click(object sender, EventArgs e)
        {
            OperatorCal(4);
        }
        private void Percent_Click(object sender, EventArgs e)       //%
        {
            ReadOut.Text = (Double.Parse(ReadOut.Text) / 100).ToString();
            NumOps = NumOps + 1;
            DecimalFlag = true;
        }
        private void Cancel_Click(object sender, EventArgs e)        //C
        {
            ReadOut.Text = "0.";
            op1 = "";
            op2 = "";
            caculator1_Load(this, new System.EventArgs());
        }
        private void CancelEntry_Click(object sender, EventArgs e)   //CE
        {
            ReadOut.Text = "0.";
            DecimalFlag = false;
            LastInput = "CE";
        }
        private void reciprocal_Click(object sender, EventArgs e)    //求倒数(/x)
        {
            ReadOut.Text = (1/Double.Parse(ReadOut.Text)).ToString();
        }
        private void Copy_Click(object sender, EventArgs e)     //复制
        {
           if(ReadOut.Text.Equals(""))
           {
               return;
           }
           Clipboard.SetDataObject(ReadOut.Text,true);
        }
        private void paste_Click(object sender, EventArgs e)   //粘贴
        {
            if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
            {
                this.paste.Enabled = true;
                ReadOut.Text = "";
                this.ReadOut.Paste();
            }
            else
            {
                this.paste.Enabled = false;
            } 
        }
        private void Delete_Click(object sender, EventArgs e)   //删除(BackSpace)
        {
            if (ReadOut.Text != "0.")
            {
                try
                {
                    ReadOut.Text = ReadOut.Text.Substring(0, ReadOut.Text.Length - 2) + ".";
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Generic Exception Handler: {0}", ex.ToString());
                }
                
                if(ReadOut.Text==".")
                {
                    ReadOut.Text = "0.";
                }
            }
            
        }
        private void sqrt_Click(object sender, EventArgs e)
        {
            TempReadout = this.ReadOut.Text;
            this.ReadOut.Text = System.Convert.ToString(Math.Sqrt(System.Convert.ToDouble(TempReadout)));
        }
    }
}

转载于:https://blog.51cto.com/lelezhang/55839

小计算器代码(C#)相关推荐

  1. java计算器流程图_帮帮忙:Java小计算器代码,及需求分析.流程图.

    展开全部 package example; import java.awt.*; import java.awt.event.*; public class Calculator extends Fr ...

  2. android计算器开源小项目代码(附安装包.apk)

    最近在学习安卓开发,做了个小计算器作为实践.发现网上的计算器教程代码的健壮性不够好,只能够容忍正确的输入.于是我花了几天时间写了个完整的程序.可能是我水平有限,其中条件控制逻辑设计的比较复杂,但我受开 ...

  3. #每日一题:小计算器(模拟)

    试题 历届试题 小计算器 资源限制 时间限制:1.0s 内存限制:256.0MB Daily English: 当一个好人受到伤害,所有的好人定将与其同历磨难. When a good man is ...

  4. 用yacc编写的算术运算计算器_10天学会四则运算小计算器设计之第5天

    写在前面的话 我大学本科学的是测控专业,2012年考取首都师范大学物理系研究生.我从未学习过数字电路设计,对FPGA和Verilog语言没有任何概念,更没有设计数字电路系统的基础和经验,也从未自己动手 ...

  5. 微信小程序,学习笔记(三)微信小计算器

    新年快乐,开工咯~~!! 2017年,新年上班第一天,大家都忙着串领导办公室领红包,我这人比较懒,就工位旁边领导领了个,闲着无聊,来写这新年第一遍博客,程序其实是去年回家前搞定的,今天算是给补上这篇记 ...

  6. html网页加减乘除代码,html+js实现简单的计算器代码(加减乘除)

    html+js实现简单的计算器代码(加减乘除) function setOp(op, opTips) { var tb=document.getElementById("tb_calc&qu ...

  7. 静态html加减乘除计算器代码,html+js实现简单的计算器代码(加减乘除)

    下面小编就为大家带来一篇html+js实现简单的计算器代码(加减乘除).小编觉得挺不错的,现在就分享给大家,也给大家做个参考. html+js实现简单的计算器代码(加减乘除) function set ...

  8. Android小项目———— 冰炭不投de小计算器

    我的第一个Android小项目 冰炭不投de小计算器 一.前言 这是我首个使用java写的app,也在学习郭霖老师的第一行代码和李刚老师的疯狂java讲义之时,进行的练习之作,刚刚学习java和and ...

  9. Android小项目———— hh小计算器

    hh小计算器 一.测试点: 二.用到的知识点 三.遇到的问题: 1. **android:layout_gravity和android:gravity的区别** 2.水平horizontal,垂直ve ...

最新文章

  1. python怎么做彩票概率_用Python一次性把论文作图与数据处理全部搞定!
  2. 数据结构与算法之递归题目
  3. YUV422/420 format
  4. iphone-common-codes-ccteam源代码 CCNSArray.h
  5. 浅谈Node.js(概念、安装、入门例子)
  6. 微信抢红包python脚本不用手机_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...
  7. 解决ubuntu中出现:dpkg: error processing package install-info
  8. 苹果“大力鼠”不敌微软“鲨”
  9. 宏杉科技 难忘十年
  10. 社会工程学主要学习内容及书籍推荐
  11. Linpack安装、配置与运行
  12. answer的汉语_answers怎么读(answers中文是什么意思)
  13. Unity3D 场景切换
  14. 无线攻击 --aircrack-ng套件之一:Airbase-ng(攻击客户端多用途工具)
  15. eplan和西门子plc的对接_彻底搞定西门子1200PLC之通讯篇
  16. SDIO读写SD卡速度有多快?
  17. 数据分析3 - 算法篇
  18. matlab画banana函数,MATLAB 必须知道的基本操作.m
  19. 读书笔记:NOSQL 菜鸟教程
  20. 【第1篇】人工智能(AI)语音测试原理和实践

热门文章

  1. JavaScript = TypeScript 类入门
  2. pyCharm编辑器激活使用
  3. ElasticSearch大数据分布式弹性搜索引擎使用
  4. 《公司的力量》读书笔记
  5. IT十八掌作业_java基础第六天_接口与适配器模式、多态、内部类
  6. ffmpeg 移植到 android 并使用
  7. awstats 安装
  8. “AV终结者/8749”病毒清理办法
  9. 关于NB-IoT的十大问题和答案【转】
  10. C# 继承实现父类方法、重写、重载