c语言版计算器实验报告.doc_第1页
c语言版计算器实验报告.doc_第2页
c语言版计算器实验报告.doc_第3页
c语言版计算器实验报告.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算器实验报告班级: 07计本(1)班姓名: 王林学号: 20706031047指导老师: 韩静一、 需求分析(1) 制作一个计算器界面工程,有数字运算符等键,输入表达式后,按等号键输入结束,并显示出正确的结果。(2) 程序能根据运算符的高低进行运算(3) 可以输入括号二、 设计思路(1) 用工程建立一个字符串的类结构,并用编辑框输入相应的数字和字符,并且输入的字符用字符串逐个接受,当输入为=的时候,用#做最后一个输入。(2) 开始对所输入的字符串进行运算和操作,显示在工程中的编辑框内。(3) 如果结束则关闭,如果再次进行运算则进行清零。三、 主程序段 char Precede(char a,char b) /判断优先级的函数switch(a)case+:if(b=*|b=/|b=() return(); case-:if(b=*|b=/|b=() return(); case*:if(b=() return(); case/:if(b=() return(); case(:if(b=) return(=);else if(b=#) return(0);else return(); case#:if(b=) return(0);else if(b=#) return(=);else return(); float Operate(float a,char theta,float b) /计算两个数的结果的函数 float z; switch(theta) case +:z=a+b;break; case -:z=a-b;break; case *:z=a*b;break; case /:z=a/b;break; return(z);float Shuhe(SqStack1 &OP,int k,int j) /输入的字符转化为数字的函数int i,e,n=k;float sum=0,fe;while(j!=0)Pop1(OP,e);fe=float(e);for(i=1;i=j;i+)fe=fe/10;sum=sum+fe;j-;while(k!=0)Pop1(OP,e);for(i=0;i=0&c=9) Push1(OP,int(c)-48); c=m_ssi+; if(tag=0) k+; else j+; flag=1; else if(flag=1) sum=Shuhe(OP,k,j); Push2(OPND,sum); OP.top=OP.base; k=0;flag=0;j=0;tag=0; switch(Precede(GetTop(OPTR),c) case:/退栈并将运算结果入栈 Pop(OPTR,theta); Pop2(OPND,b);Pop2(OPND,a); Push2(OPND,Operate(a,theta,b); break; sum=GetTop2(OPND); m_ss.Format(%f,sum); UpdateData(FALSE);四、 调试分析(1) 当输入“1+2-3=”时,显示结果为“0.000000”,结果正确,置清零。(2) 当输入“2.96*1.85/6.741=”时,显示结果为“0.812342”, 结果正确,置清零。(3) 当输入“2.69-19.145=”时,显示结果为“-16.455000”, 结果正确,置清零。(4) 当输入“5-7*(5+1.8)=”时,显示结果为“-42.600002”, 结果正确,置清零。(5) 当输入“2-/65=”时,显示结果为“1.969231”,结果错误,置清零。(6) 当输入“-6+9=”时,显示结果为“-107374176.000000”, 结果错误,置清零。(7) 当输入“0-6+9=”时,显示结果为“3.000000”, 结果正确,置清零。(8) 当输入“(2+3)*5-8=”时,显示结果为“17.000000”, 结果正确,置清零。(9) 当输入“6*(-3+1)=”时,显示结果为“12.000000”, 结果错误,置清零。(10) 当输入“6*(0-3+1)=”时,显示结果为“-12.000000”, 结果正确,置清零。(11) 当输入“6*(1-3)=”时,显示结果为“-12.000000”, 结果正确,结束。调试说明以及分析:1、当输入为正确的格式时,能算出正确的结果,其中包括:小数、整数以及个位以上的数字,且运算符包括:加、减、乘、除运算,还有就是可以加括号等。 2、当输入为错误的格式是,显示的是错误的结果,如(5)中的运算结果就是错误的。 3、若某个数字是负数,如果直接输入,结果是错误的,但如果变为零减去该数字的绝对值的话或者把两数的顺序更改一下,显示的是正确的结果,如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论