ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:35.95KB ,
资源ID:9060966      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9060966.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言高精度计算器程序设计报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言高精度计算器程序设计报告.docx

1、C语言高精度计算器程序设计报告综合性程序设计报告设计题目: 高精度计算器指导教师: 班 级: 学 号: 设 计 者: 成 绩: _设计时间:2010年 5 月 27 日高精度计算器题目描述编制一个软件用于实现高精度的计算基本要求: 要有+,-,*,/四则运算 记录算式 输出算式 查看算式及结果功能模块分解本程序用到以下函数:void iPush(float); float iPop(); float StaOperandMaxSize; char SrcexpMaxSize; char CapaexpMaxSize; char RevPolishexpMaxSize; float NumCap

2、aTab26; char validexp=*/+-(); char NumSets=0123456789; char StackSymbMaxSize; void NumsToCapas(char , int , char , float ); int CheckExpress(char); int PriorChar(char,char); int GetOperator(char , char); void counterPolishexp(char INexp, int slen, char Outexp); float CalcRevPolishexp(char , float ,

3、char , int);数据库设计及说明1、变量的说明和解释:首先定义了两个结构体类型名SqStack和dstack,分别用来定义字符栈和数字栈。然后在主函数中定义了字符型数组EN,AN,BN,EN用来保存用户输入的计算式,AN用来保存后缀表达式,EN用来保存从输出文件中读取的字符串。还定义了一个字符型变量ck,用来记录用户是否要查看历史记录。 其余一些变量基本都是在各个函数中的局部变量,或者是函数的形参或实参。2、有关的库函数说明:程序里用到了stdio.h,和conio.h库函数,首先stdio.h我们经常用到,内部包含了我们常用的输入输出函数等等。 conio.h不是C标准库中的头文件。

4、 conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如 getch()函数等等。界面说明主要算法说明#include /定义输入输出函数#include /字符串处理#include/定义通过控制台进行数据输入和数据输出#include ctype.h/定义 bool 类型#include /定义数学函数代码清单及注释#include stdio.h #include string.h #include #include ctype.h #include math.h /ex

5、pression evaluate #define iMUL 0 #define iDIV 1 #define iADD 2 #define iSUB 3 #define iCap 4 /#define LtKH 5 /#define RtKH 6 #define MaxSize 100 void iPush(float); float iPop(); float StaOperandMaxSize; int iTop=-1; / char SrcexpMaxSize; char CapaexpMaxSize; char RevPolishexpMaxSize; float NumCapaTa

6、b26; char validexp=*/+-(); char NumSets=0123456789; char StackSymbMaxSize; int operands; / void NumsToCapas(char , int , char , float ); int CheckExpress(char); int PriorChar(char,char); int GetOperator(char , char); void counterPolishexp(char INexp, int slen, char Outexp); float CalcRevPolishexp(ch

7、ar , float , char , int); void main() int ilen;int i; char c; float iResult=0.0; while(1)printf(n请输入计算式:n); memset(StackSymb,0,MaxSize); memset(NumCapaTab,0,26); /A-NO.1, B-NO.2, etc. gets(Srcexp); ilen=strlen(Srcexp); NumsToCapas(Srcexp,ilen,Capaexp,NumCapaTab); for (i=0; ioperands; +i) ilen=strlen

8、(Capaexp); counterPolishexp(Capaexp,ilen,RevPolishexp); ilen=strlen(RevPolishexp); iResult=CalcRevPolishexp(validexp, NumCapaTab, RevPolishexp,ilen); printf(n计算结果为:n%s=%.6fn,Srcexp,iResult); printf(是否继续计算,Y/继续,N/退出);c=getch();if(c=n|c=N)break; void iPush(float value) if(iTop-1) return StaOperandiTop

9、-; return -1.0; void NumsToCapas(char Srcexp, int slen, char Capaexp, float NumCapaTab) char ch; int i, j, k, flg=0; int sign; float val=0.0,power=10.0; i=0; j=0; k=0; while (islen) ch=Srcexpi; if (i=0) sign=(ch=-)?-1:1; if(ch=+|ch=-) ch=Srcexp+i; flg=1; if (isdigit(ch) val=ch-0; while (isdigit(ch=S

10、rcexp+i) val=val*10.0+ch-0; if (ch=.) while(isdigit(ch=Srcexp+i) val=val+(ch-0)/power; power*=10; /end if if(flg) val*=sign; flg=0; /end if /write Capaexp array / write NO.j to array if(val) Capaexpk+=A+j; Capaexpk+=ch; NumCapaTabj+=val; /A-0, B-1,and C, etc. else Capaexpk+=ch; val=0.0; power=10.0;

11、/ i+; Capaexpk=0; operands=j; float CalcRevPolishexp(char validexp, float NumCapaTab, char RevPolishexp, int slen) float sval=0.0, op1,op2; int i, rt; char ch; /recursive stack i=0; while(ch=RevPolishexpi) & i-1) sval=iPop(); return sval; int GetOperator(char validexp,char oper) int oplen,i=0; oplen

12、=strlen(validexp); if (!oplen) return -1; if(isalpha(oper) return 4; while(i=4) return -1; return i; int CheckExpress(char ch) int i=0; char cc; while(cc=validexpi) & ch!=cc) +i; if (!cc) return 0; return 1; int PriorChar(char curch, char stach) /栈外优先级高于()栈顶优先级时,才入栈 /否则(=),一律出栈 if (curch=stach) retu

13、rn 0; /等于时应该出栈 else if (curch=* | curch=/) if(stach!=* & stach!=/) return 1; else if (curch=+ | curch=-) if (stach=( | stach=) return 1; else if (curch=() if (stach=) return 1; return 0; void counterPolishexp(char INexp, int slen, char Outexp) int i, j, k,pr; char t; i=0; j=k=0; while (INexpi!= & is

14、len) if (INexpi=() StackSymbk+=INexpi; /iPush(*(INexp+i); else if(INexpi=) /if(t=iPop()!=-1) while(t=StackSymbk-1)!=() Outexpj+=t; k-; k-; else if (CheckExpress(INexpi) / is oparator / printf(operator %c k=%dn,INexpi,k); while (k) / iPush(*(INexp+i); if(pr=PriorChar(INexpi,StackSymbk-1) break; else

15、/if (t=iPop()!=-1) t=StackSymbk-1; k-; Outexpj+=t; /end while StackSymbk+=INexpi; /common process else /if() 变量名 / printf(operand %c k=%dn,INexpi,k); Outexpj+=INexpi; i+; / while (k) t=StackSymbk-1; k-; Outexpj+=t; Outexpj=0; 设计体会本次设计使我对c语言有了更深层的了解,C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,还可以开发创造能力、培养沟通能力。这次实习时间是三个星期,使我感到时间不够用,这足以说明c语言的难度,但是通过自学和向同学们请教和自己查找资料,终于基本上完成了设计任务,在这个过程中我收获了许多,各方面的能力都得到了加强和提高,感谢这次综合性程序设计!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1