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、付费专栏及课程。

余额充值