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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言计算器小程序源代码+实习报告Word下载.docx

1、4. 调试分析65. 核心源程序清单和执行结果61.需求分析1.1 程序的功能本程序是一个计算器小程序,利用算符优先关系,实现对算术四则混合运算表达式的求值并输出结果。1.2 输入输出的要求 输入的形式:算术表达式,以井号“#”结束。例如2*(3+4)#; 包含的运算符只能有+ 、-*/(、 );输出的形式:运算结果,例如Answer is:14;1.3 测试数据 第一组: 输入 3*(9-4)# 输出 Answer is:15 第二组: 输入140/(57+13)# 输出 Answer is:2第三组: 输入 56*(12-10)# 输出 Answer is:1122.概要设计3.详细设计

2、主要部分详细流程: (1)设置两个工作栈,分别存放操作数和运算结果 (2)判断字符的优先级 4.调试分析错误提示1:错误原因 :在中文输入法下输入的“;”,导致程序不能识别。调试方法 :调到英文输入法下输入即可。错误提示2:错误原因: 在Init_OPND,Init_OPTR后边都忘加了“&”符号, 导致程序不识别。调试方法:在 Init_OPND,Init_OPTR后边加上“&”即可。5.核心源程序清单和执行结果全部源代码如下:#include stdlib.h#define MAX 100 typedef struct /*定义一个栈存放运算数*/ int aMAX;int top;OPN

3、D;typedef struct /*定义一个栈存放运算符*/ char aMAX;OPTR;void Init_OPND(OPND *s) /*初始化运算数栈*/ s-top =0; void Init_OPTR(OPTR *s) /*初始化运算符栈*/ void Push_OPND(OPND *s,int x) /*压入一个运算数*/ top +;a s-top =x;void Push_OPTR(OPTR *s,char x) /*压入一个运算符*/ int Pop_OPND(OPND *s) /*取出一个运算数*/ int x;x=s-top;top -;return x;char P

4、op_OPTR(OPTR *s) /*取出一个运算符*/ char x;int GetTop_OPND(OPND *s) /*取栈顶运算数*/ return (s-as-top);char GetTop_OPTR(OPTR *s) /*取栈顶运算符*/ int IsOpr(char c) /*判断输入字符是否为运算符*/ if (c=|c=#) return 1;else return 0;char Precede(char s,char c) /*判断字符的优先级*/ switch(s) case :if(c= return ; else if (c= else if(c= else bre

5、ak;return =int Operate(int x,char opr,int y) /*计算*/ int result;switch (opr) case result = x + y; break; result = x - y; result = x * y; result = x / y;return result;void main() OPND sdata;OPTR soper;int a,b,result,i;char ch,theta;Init_OPND(&sdata);Init_OPTR(&soper);Push_OPTR(&soper,);ch=getchar();wh

6、ile(ch!|GetTop_OPTR(&soper)!) /当读入的字符和OPTR栈顶的字符均为#时结束运算*/ if(!IsOpr(ch) /*是运算数的情况*/ i=atoi(&ch); /*将字符型转为整型*/ ch=getchar(); /*使得可以输入几位数*/ while(!IsOpr(ch) i=i*10+atoi(& Push_OPND(&sdata,i); switch(Precede(GetTop_OPTR(&soper),ch) /*比较栈顶运算符和刚输入运算符的优先级*/ Push_OPTR(&soper,ch); theta=Pop_OPTR(& b=Pop_OPND(& a=Pop_OPND(& result=Operate(a,theta,b);sdata,result);printf(Anwser is: %dn,GetTop_OPND(&sdata);

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

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