为应付考试的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)));

        }

    }

}