计算器实验报告_2022082620382233.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
试验一计算器的制作 一. 试验要求 1.参照Windows 系统供应的计算器功能,制作一个自己的计算器,至少能完 成数据的加减乘除的基本功能。 多个控件〔按钮〕大事的共享 二. 设计思路 1、 首先要考虑将输入的内容在 textbox ±显示出来。所以整个过 程接受全局变量 input 来记录用户输入的内容〔计算器的按 键输入或者键盘输入〕。然后再将 input 的内容显示到 textbox 上。 2、 接下来就是怎么去将用户的输入变成数字和运算符的问题了。 本试验的计算器有“一般运算”和“科学运算”之分。所以 在计算的时候需要推断是哪一种运算,用 radioButton.Checked 来推断。 3、 假如是一般的运算,“+”、,”、* ”、/”的优先级一样,所 以算法比较简洁,只需要将 input 字符串的内容分割成运算 符和数字, 然后再 push 到两个不同的栈中。其中数字要先 转换为 double 类型, 再存入到栈中。 4、 假如是科学运算,则需要依据来“ +”、“-”、“*”、/”的优先级来进行运算。我是运用堆栈来实现的。算法如下:每当用 户点击“+”、,”、*” T 中的任何一个键时,则进行判 断,假如是“*”、/”,则将“*”、“/”之前的一个数变成double 类型,然后再存入栈中。然后设置乘号的标识符 flagl 为 true,或者设 置除号的标识符 flag2 为 true。假如用户点击 的是“+”、-”,则先推断 flag1,flag2 是否为 true,假如为 true, 则从栈中 pop 一个数,然后与当前用户输入的数进行计算, 然后再 push 到栈中,并把“ +”、-”也存入到另一个栈中; 假如为 false,则将+”、-”之前的一个数变为 double,然 后存入栈中,把“ +”、-”也存入到另一个栈中。 5、 当用户点击“=”号的时候,则对两个栈进行运算。由于试验 还要求可以支持键盘输入。所以需要对 Input 进行推断。因 为假如是键盘输入,input 的值为空,所以需要先把 textbox 中的内容读取进来,然后再进行推断,分割成数字和运算符, 然后再分别存入到两个栈中。假如是计算器的按键输入,则 直接对两个栈的内容进行运算。 6、 假设你的输入为“ 1+2-3*4+4+”,然后按“=”号,即输入的式 子后面多了一个“ +”号或“-”号或“*”号或“/”号,程 序会白动忽视式子最终多出的那一个运算符, 照旧能够正确 计算。而且程序的上一次计算结果能够作为下一次计算的一 个输入, 即将上一次的计算结果赋给运算。 input,然后可以连续 7、 程序中还设计了小数的计算、退格键以及清零键。可以进行小 数的“ +”、,”、“*”、“/”;假设输错了数字,可以通过退格键“ ”来清除。本试验的“退格键”支持一次性退多个格, 例如,你输入 1+2-3*45+6 之类的,然后退格到 1+2-3,计算 结果依 然正确。清零键即将程序中的各个变量的值重置。 8 、本程序的键盘输入跟计算器上的按键输入具有同样的效果, 同 样具有“一般运算”和“科学运算”之分。它只是在获得数 据方面跟按键输入不同,其余的计算是一样的 四则运算核心代码: private void cal() //推断+或-”号之前的运算符是不是为 *”或者/号”,假如是则进行 相应的计算。 {  if (radioButton2.Checked == true ) { { sum =  if (flag1 == true ) Double .Parse(substr) * num.Pop(); num.Push(sum); flagl = )  false ; else if (flag2 == true ) { sum = num.Pop() / num.Push(sum);  Double.Parse(substr); flag2 = ) {  else false ; num.Push( ) ) else { Double.Parse(substr)); num.Push( ) Double.Parse(substr)); private void button13_Click( object sender, EventArgs e)// 加号算法,调用 cal()函数。 ( clears(); i = input.LastlndexOfAny(fuhao); substr = input.Substring(i + 1); if (substr != ( cal(); fh.Push( click(sender,e); ) +); } } private void button14_Click( obje

文档评论(0)

教育小专家 + 关注
实名认证
文档贡献者

本人从事教育行业11年,有丰富的教育工作经验和写作能力,欢迎大家咨询。

1亿VIP精品文档

相关文档