600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > c语言课程设计计算器软件 C语言课程设计简单计算器程序.docx

c语言课程设计计算器软件 C语言课程设计简单计算器程序.docx

时间:2020-05-09 11:11:04

相关推荐

c语言课程设计计算器软件 C语言课程设计简单计算器程序.docx

课程设计名称: C 语言课程设计课程设计题目: 简单计算器程序

目录

第1章 需求分析 0

设计要求 0

任务 0

第2章 总体设计 1

TOC \o "1-5" \h \z \o "Current Document" 设计简介及设计方案论述 1...

\o "Current Document" 功能模块层次图 1...

第3章 详细设计 2

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

算法描述 5

第4章 调试分析 7

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

\o "Current Document" 错误的解决方法 7...

第5章 用户手册 8

总 结 1..1..

参考文献 1..2..

附 录(程序清单) 1..2.

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

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

第 1 章 需求分析

设计要求

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

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

(2)系统的各个功能模块要求用函数的形式实现; (4)界面简单,可操作性高。

任务

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

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

(3)编写代码;

( 4)程序分析与调试。

说明:

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

第2章总体设计

设计简介及设计方案论述

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

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

功能模块层次图

第 3 章 详细设计

栈的定义与使用

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

Struct

{

char data[MaxSize];

{

*p=++j;

while(x[j]>='0'&&x[j]<='9')

{

j++;

} for(i=*p;i

{ n=n+pow,i-*p+1)*(x[i]-'0'); }

}

*p=j;

if(sign=='-')

return(-n); return(n);

}

功能模块流程图(以下有简易图与详细图)

开始

输入表达式

逐个字符扫描直至

‘=,或 ‘ \0'

逐个扫描字符直

至遇到‘ \0'

运算符

4

4)重复上述步骤直到遇到中缀表达式的结束符标记“=”,弹出栈中的所有

由(后缀)逆波兰表达式计算中缀表达式原理

计算机处理(后缀)逆波兰表达式求值问题是比较方便的,即将遇到的操作 数暂存于一个操作 数栈中,凡是遇到操作数,便从栈中 pop出两个操作数,并 将结果存于操作数栈中,直 到对(后缀)逆波兰表达式中最后一个操作数处理完, 最后压入栈中的数就是后最表达式的计算结 果。中缀表达式转换为等价的(后缀) 逆波兰表达式,中缀表达式不方便与计算机处理,通常要讲中缀表达式转换为一 个与之等价的(后缀)逆波兰 表达式。等价是指两个表达式的计算顺序和计算结 果完全相同。中缀表达式:(5*2+1)=的等价(后缀)逆波兰表达式是:5 2 * 1 + /= 仔细观察这两个等价的表达式可知,操作数的出现次序是相同的,但运算符的出 现 次序是不同的。在(后缀)逆波兰表达式中,运算符的出现次序是实际进行操 作的次序;在中追表 达式中,由于受到操作符的优先级

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。