这是我昨天改的那一个程序,思路有点乱,虽然功能都实现了,但是有些地方我还是看不懂
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace BfirstApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private double sum = 0;
private double sum1 = 0;
private int flag = -1; //加减乘除的运算标志
private bool add = false;//用于标志用户点击的是否为数字 按钮 默认表示没有
private int dit = 0;
private void f() //根据标志执行相应的加减乘除运算,如果运算结果是整数,就在后面加"."
{
if (flag < 0) return;
if (flag == 0) sum = sum + Convert.ToDouble(textBox1.Text);
if (flag == 1) sum = sum - Convert.ToDouble(textBox1.Text);
if (flag == 2) sum = sum * Convert.ToDouble(textBox1.Text);
if (flag == 3) sum = sum / Convert.ToDouble(textBox1.Text);
textBox1.Text = Convert.ToString(sum);
int temp = (int)sum;
double t = (double)temp;
if (sum == t)
{
textBox1.AppendText(".");
}
}
//还没看懂
private void num_click(object sender, EventArgs e)
{
Button b = (Button)sender;
if (dit >= 1 && b.Text == ".")
{
return;
}
if (dit < 1 && textBox1.Text.Length > 0 && textBox1.Text[textBox1.Text.Length - 1] == '.')
{
textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
}
if (b.Text == ".")
{
dit++;
}
if (!add)
{
textBox1.Text = "";
add = true;
}
textBox1.AppendText(b.Text);
if (textBox1.Text == ".")
{
textBox1.Text = "0.";
}
if (dit < 1 && textBox1.Text != "0.")
{
textBox1.AppendText(".");
}
}
//点击运算符
private void oper_click(object sender, EventArgs e)
{
Button b = (Button)sender;
if (b.Text == "+")
{
if (add)
{
f();
}
sum1 = sum = Convert.ToDouble(textBox1.Text);
flag = 0;
add = false;
dit = 0;
}
if (b.Text == "-")
{
if (add)
{
f();
}
sum1 = sum = Convert.ToDouble(textBox1.Text);
flag = 1;
add = false;
dit = 0;
}
if (b.Text == "*")
{
if (add)
{
f();
}
sum1 = sum = Convert.ToDouble(textBox1.Text);
flag = 2;
add = false;
dit = 0;
}
if (b.Text == "/")
{
if (add)
{
f();
}
sum1 = sum = Convert.ToDouble(textBox1.Text);
flag = 3;
add = false;
dit = 0;
}
if (b.Text == "+//-")
{
if (textBox1.Text.Length == 0) return;
sum = Convert.ToDouble(textBox1.Text);
sum = -sum;
textBox1.Text = Convert.ToString(sum);
int temp = (int)sum;
double t = (double)temp;
if (sum == t)
{
textBox1.AppendText(".");
}
}
//求平方根,百分数,倒数运算之后,在执行其他操作会报错
if (b.Text == "sqrt") {
sum = Math.Sqrt(Convert.ToDouble(textBox1.Text));
textBox1.Text = Convert.ToString(sum);
int temp = (int)sum;
double t = (double)temp;
if (sum == t)
{
textBox1.AppendText(".");
}
flag = -1;
}
if (b.Text == "%") {
sum = Convert.ToDouble(textBox1.Text);
sum *= sum/100;
textBox1.Text = Convert.ToString(sum);
int temp = (int)sum;
double t = (double)temp;
if (sum == t)
{
textBox1.AppendText(".");
}
flag = -1;
}
if (b.Text == "1/x") {
sum = 1.0/Convert.ToDouble(textBox1.Text);
textBox1.Text = Convert.ToString(sum);
int temp = (int)sum;
double t = (double)temp;
if (sum == t)
{
textBox1.AppendText(".");
}
flag = -1;
}
if (b.Text == "C") {
sum = 0; sum1 = 0;
textBox1.Text = "0.";
add = false;
flag = -1;
dit = 0;
}
if (b.Text == "CE")
{
textBox1.Text = "0.";
add = false;
dit = 0;
}
if (b.Text == "Backspace")
{
int length = textBox1.Text.Length;
/*char[] des=textBox1.Text.ToCharArray(); //注释掉的代码也可实现所要求的功能
* if(length>0)des[length - 1] = '/0';
* string str=new string(des);
* textBox1.Text = str;
*/
if (length > 0&&add==true) {
if (textBox1.Text[length - 1] == '.')
dit = 0;
if (length > 2) textBox1.Text = textBox1.Text.Remove(length - 2);
else textBox1.Text = "0";
sum = Convert.ToDouble(textBox1.Text);
int temp = (int)sum;
double t = (double)temp;
if (sum == t)
{
textBox1.AppendText(".");
}
}
if (textBox1.Text.Length==2) { textBox1.Text = "0."; add = false; }
}
if (b.Text == "=")
{
if (add) {
sum1 = Convert.ToDouble(textBox1.Text); f();
add = false;
}
else
{
if (flag == 0) sum = Convert.ToDouble(textBox1.Text) + sum1;
if (flag == 1) sum = Convert.ToDouble(textBox1.Text) - sum1;
if (flag == 2) sum = Convert.ToDouble(textBox1.Text) * sum1;
if (flag == 3) sum = Convert.ToDouble(textBox1.Text) / sum1;
textBox1.Text = Convert.ToString(sum);
int temp = (int)sum;
double t = (double)temp;
if (sum == t)
{
textBox1.AppendText(".");
}
}
}
}
}
}