c语言课程设计计算器程序分析,c语言课程设计简单计算器程序..docx

课程设计名称:C语言课程设计

课程设计题目:

简单计算器程序

TOC \o "1-5" \h \z \o "Current Document" 第1章需求分析1

\o "Current Document" 1.1设计要求1

\o "Current Document" 1.2任务1

\o "Current Document" 第2章总体设计2

\o "Current Document" 2.1设计简介及设计方案论述2

\o "Current Document" 2.2功能模块层次图2

\o "Current Document" 第3章详细设计3

\o "Current Document" 3.3由(后缀)逆波兰表达式计算中缀表达式原理8

3.3.1算法描述8

\o "Current Document" 第4章调试分析10

\o "Current Document" 4.1程序设计中所遇到的错误及犯错的原因10

\o "Current Document" 4.2错误的解决方法10

\o "Current Document" 第5章用户手册11

总结15

\o "Current Document" 参考文献16

\o "Current Document" 附录(程序清单)17

第1章需求分析

1.1设计要求

(1)用C语言数据结构实现程序设计;

(2)利用结构体、栈、进行相关信息处理;

(2)系统的各个功能模块要求用函数的形式实现;

(4)界面简单,可操作性高。

1.2任务

(1)定义一个结构体类型数组,输入0?9及十、-、*等符号的信息,将其 信息存储起來;

(2)输入简单的加减乘除算术计算式,并在屏幕上显示逆波兰(后缀式)表 达式和计算结果;

(3)编写代码;

(4)程序分析与调试。

说明:

本课程设计将实现一个简单计算器。在功能上尽量模仿wmdows的 计算器。系统界面不做牵制要求。该程序能实现标准型中十、-、*、/、(、)、.、的 混 合运算表达式(一般意义上的中缀表达式),将其转换成逆序波兰表达式(后 缀表达式)并计算输出结果。在进行运算后可以选择继续运算或者结束当前运算。 即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间, 对人们的生活有一定的帮助。

第2章总体设计

2.1设计简介及设计方案论述

逆波兰表达式乂叫做后缀表达式。在通常的表达式中,二元运算符总是置于 与之相关的两个运算对象之间,所以,这种表示法也称为中缀表达式。波兰逻辑 学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法。按此方法,每 一运算符都置于其运算对象之后,故称为后缀表达式。

后缀表达式的优点是显而易见的,编译器在处理时候按照从左至右的顺序读 取逆波兰表达式,遇到运算对象直接压入堆栈,遇到运算符就从堆栈提取后进的 两个对象进行计算,这个过程正好符合了计算机计算的原理。后缀表达式比前缀 表达式更加易于转换,并且它的最左面一定为数字,这一点在实际编程的时候就 会体会到它的好处了。逆波兰表达式有一个更大的优点,就是拆括号,根据运算 符的级别将中缀表达式转换成逆波兰表达式后,运算顺序就己经替代了运算符的 级别,这样也避免了括号提高运算级别的特殊处理。

2.2功能模块层次图

简单计算器

表达式格式转换系统t

表达式格式转换系统t

求值计算系统

将算术表达式转化为逆波兰表达式计算逆波兰表达式的值

第3章详细设计

3.1栈的定义与使用

首先定义两个栈,一个字符型,一个双精度型,程序代码如下:

Stmct

char data[MaxSize];

//存放表达式的字符数组

mt top;

〃栈顶指针

}Svm;

/*符号*/〃作为存放运算表达式的栈

使用

stmct

double data[MaxSize];

〃存放运算结果的数组

mt top;

}Num;

//栈顶指针

严数*/存储逆波兰表达式(后缀式)计算器

的运算数〃作为存放运算结果的栈使用

void IiutStack()

{ Syin.top=Num.top=-1; }

〃栈的初始化

void SviiiPushO

〃压栈

if(Svm.top

{ Syin.data[-H-Sym.top]=calc[i++]; } else

{ piintf("Sym 栈满\n”); return; }

}

if(Svm.top>=0)

{ expi[-H-t]=Syin.data[Sym.top-];}

else

{ prmtf("Sym 栈空\nH); return; }

}

void NuniPu sli()〃压栈

{

If(Num. top

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值