C#模仿微软做的计算器如何实现这几个功能

最后面那一直有一个小点就是.这个点第二就是一直按等号数字会一直在变第3个就是如何实现1+2再按加再按等于出来6谢谢帮帮实现下代码吧~~... 最后面那一直有一个小点就是 . 这个点 第二就是一直按等号 数字会一直在变 第3个就是如何实现 1+2 再按加再按等于 出来6 谢谢 帮帮实现下代码吧~~ 展开
 我来答
熊雨梅酒彦
2020-04-26 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:31%
帮助的人:817万
展开全部
后面有小点……自己添加就可以了啊,比如截取TextChange事件进行判断在合适的地方加点。
一直按等号数字会变:计算器的实现一般都要用到队列和堆栈,按等号结果会变这个属于堆栈的应用。
操作数1压栈-》操作符压栈-》操作数2压栈-》出栈计算结果
用堆栈保护用户输入的操作符和操作数,每次按等号就重新进行一次计算。
至于第三个问题,仔细看了一下微软的Calc,其实原理同问题二,你按1+2,再按加号的的时候它已经把1+2=3算出来了,然后你又按了加号(也就是没有清除结果,也没有输入新的操作数),因此它把数字3放到操作数1的位置上,然后是你按的加号。你按等号的时候只有一个操作数(也就是刚才的结果“3”),所以它自动认为你的第二个数也是3,于是3+3=6。
总的来说你要实现的就是堆栈代码吧,其实不是很难,如果不需要科学计算器“MS”“MR”这样的暂存功能的话,不用堆栈也完全OK,自己试试吧,印象会深点。
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
bxfc
2010-01-15 · TA获得超过872个赞
知道小有建树答主
回答量:1104
采纳率:0%
帮助的人:687万
展开全部
这很容易
点的话需要你判断.
将输入框的默认值设置为.就行了.在进行点击输入的时候进行判断是否需要这个点存在.然后在置回的时候再将输入框的值设置为.就行了

一直按=号程序以上一次点击的算法进行计算.这只是一个很简单的状态记录功能.
你可以设置一个全局变量.这个变量的功能在于记录上一次点击的算法.
再设置一个全局变量.记录上次计算的结果.
然后写个方法.里面列举出几个方法的实现.根据传入的算法参数来判断需要进行哪种记算就可以了.
计算的二个值是上次计算的结果与输入框中的值.然后返回结果或者直接将计算结果给值于输入框就行了.只是不要忘记更新那两个全局变量
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
弭萧余伦
2020-02-20 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:744万
展开全部
最后那个小点‘.’直接在赋值给textbox的时候再数据的最后加上就是了例如:textbox1.Text
=
number
+
".";其中number就是你计算出的结果。第二个按等号其实就是数字自己加自己;微软的经计算中每按一次运算符号都对前面的进行了一次计算的例如我已经输入了1+2,如果我再按减号“-”就先算1+2的结果然后显示出来。
其实微软计算器的计算就是栈的操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
子夜霓虹
2010-01-14
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
给你个思路吧
1. 最后的小点: 在WinForm里计算出的结果显示出来都要转换成string型 你把计算结果ToString()后再加上"."在显示出来就可以了
2. 按等于号数字一只会变: 计算器一般只有两种计算模式 单目和双目
抛开X平方这种单目运算先不说,双目运算的一般模式为 X op Y = ? 所以把参与运算的变量X ,Y 和运算符op记录下来,等号button的事件里只要将X op Y的结果显示出来并将结果赋给X就可以了
3. "1" "+" "2" "+" "=" 结果为6: 按照2设计的话3自然可以解决了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
justkeepmoving
2010-01-15 · TA获得超过486个赞
知道小有建树答主
回答量:462
采纳率:0%
帮助的人:499万
展开全部
小数点问题哈
在你的小数点的文本框的keypress事件里加代码

假如txtbox1就是你显示的文本框
用if(txtbox1.indexof(".")>1)
{
messsagebox.show("已经输入了小数点了哈!")
e.handled=true;//不接受不正确的输入
}

第二个和第三个应该算是一个问题哈

你先设置一个全局变量bool preesd=true在你的数字按钮下把它复制为真

然后再你的”=“按钮的单击事件里写
preesd=true;
if(bool)
{
txtbox1.text=num1+num2//num1 num2是你分别保存你输入的数据的,至于数据的转换我这里就没有写出来了哈

}
else
{

txtbox.txt+=txtbox1.text//至于这里的符号问题就是你处理了!应该很简单吧@
}

希望能帮你解决问题哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式