如何用C#制作计算器啊?

 我来答
xxxyyxxx
2008-09-28 · TA获得超过340个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:253万
展开全部
单纯算法的问题,自己写的,写的不好,仅供交流~ 不要笑我!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
/*
计算器算法
当每次安1~9的数字按键,调用一个anniu方法,
在aniu方法
用是否输入运算符来判断是否是输入的是
第一个第二个值,中间在判断是否是小数的数值算法。
普通值的算法是
a=a*10+i;
i为传入的参数的值
小数值的算法是
a=a+i/s;
s=s*10;
s为小数的位数,1为无10为1位,100为2位。

运算符号方法的算法
调用fh这个方法
判断当前是否有输入过运算符
如果无则给运算字符串赋值为传入的值,并置空小数位
有则调js计算的方法,并并置空小数位,在给运算字符串赋值为传入的值。

计算的方法
由于数不能为0所以
首先判断是否为处号除数不能为0
如果是则不计算跳出
否则计算相应的符号计算并显示
*/

namespace WindowsApplication1
{

public partial class Form1 : Form
{
String Fh="";//用于存储符号运算符
double a, b, c;//a为第一个接收的值,b为第二个值,c为计算结果
long s = 1;//初始小数的位数
public Form1()
{
InitializeComponent();
}

public void anniu(double i)//按钮的方法
{
if (Fh.Equals(""))//是否当前有运算符
{
if (s == 1)//判断是否有小数点
{
a = a * 10 + i;//计算无小数的值
}
else
{
a = a + i / s;//计算有小数的值
s = s * 10;//计算下一个小数的位置
}
textBox1.Text = a.ToString();//显示计算的结果
}
else //当前有运算符的方法
{
if (!(c == 0)) { b = 0; c = 0; }//当有计算结果就清除B的值
if (s == 1)//判断是否有小数点
{
b = b * 10 + i;//计算无小数的值
}
else
{
if (i == 0)//判断在小数位后添加0
{
s = s * 10;//计算下一个小数的位置
}
else
{
b = b + i / s;//计算有小数的值
s = s * 10;//计算下一个小数的位置
}
}
textBox1.Text = b.ToString();//显示计算的结果
}
}

public void js() {//数学计算的方法
if (Fh=="/")//判断是否除数等于0
{
if (b == 0) //是则不计算
{
textBox1.Text = "被除数不能为0";//显示被除数不能为0
return;//返回
}
else
{
c = a / b;
}
}
else//如果不是出发计算则执行其他计算
{
if (Fh.Equals("+")) { c = a + b; }
if (Fh.Equals("-")) { c = a - b; }
if (Fh.Equals("*")) { c = a * b; }
if (Fh.Equals("%")) { c = a % b; }
}
textBox1.Text = c.ToString(); //显示计算结果
a = c;//将结果给第一个变量作为
}

public void fh(string str) //接收运算符的方法
{
if (Fh.Equals(""))//当前是否已经有运算符
{
Fh = str; s = 1;//没有则接收运算符,小数点失效
}
else
{
js(); s = 1; Fh = str;//有则计算当前的值,小数点失效
}
}

private void button1_Click(object sender, EventArgs e)//监听按钮1的单击事件
{
anniu(1);//调用按钮方法
}
private void button2_Click(object sender, EventArgs e)
{
anniu(2);
}

private void button3_Click(object sender, EventArgs e)
{
anniu(3);
}

private void button4_Click(object sender, EventArgs e)
{
anniu(4);
}

private void button5_Click(object sender, EventArgs e)
{
anniu(5);
}

private void button7_Click(object sender, EventArgs e)
{
anniu(6);
}

private void button6_Click(object sender, EventArgs e)
{
anniu(7);
}

private void button8_Click(object sender, EventArgs e)
{
anniu(8);
}

private void button9_Click(object sender, EventArgs e)
{
anniu(9);
}

private void button10_Click(object sender, EventArgs e)
{
if (!textBox1.Text.Equals("0"))
{
anniu(0);
}
}

private void button11_Click(object sender, EventArgs e)//监听运算符按钮的事件
{
fh("+");//调用运算符的方法
}

private void button12_Click(object sender, EventArgs e)
{
fh("-");
}

private void button14_Click(object sender, EventArgs e)//清空按钮
{
textBox1.Text = "0";//清空TEXTBOX的显示值
a = 0; b = 0; c = 0; s = 1; Fh = "";//初始化所有值
}

private void button13_Click(object sender, EventArgs e)//等于按钮
{
js();//调用计算方法
}

private void button16_Click(object sender, EventArgs e)
{
fh("/");
}

private void button17_Click(object sender, EventArgs e)
{
fh("%");
}

private void button15_Click(object sender, EventArgs e)
{
fh("*");
}

private void button19_Click(object sender, EventArgs e)//正负号
{
if (Fh.Equals("")) { a = -a; textBox1.Text = a.ToString(); } else { b = -b; textBox1.Text = b.ToString(); }//初始当前值的正负号
}

private void button18_Click(object sender, EventArgs e)//小数点
{
if (s == 1) { s = 10; }//如果之前有过使用小数点则跳过当前小数点按钮的方法,否则初始小数点的
}

}

}
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
mavk
2008-09-27 · TA获得超过139个赞
知道答主
回答量:116
采纳率:9%
帮助的人:25.1万
展开全部
兄弟 感觉和你有种似曾相识的感觉 你成都的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ling9918
2008-09-27 · TA获得超过230个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:245万
展开全部
建议你去找本参考书慢慢看!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式