迷你计算器说明书
- 格式:doc
- 大小:257.50 KB
- 文档页数:35
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年春季学期
算法与数据结构 课程设计
题 目: 迷你计算器设计
专业班级:计算机科学与技术(一)
姓 名: 黄立新
学 号: 10240126
指导教师: 张 永
成 绩:
目 录
摘 要 ........................................................................................................................... 3
前 言 ........................................................................................................................... 4
正 文 ........................................................................................................................... 5
1. 采用类C语言定义相关的数据类型 ........................................................... 5
2. 各模块的伪码算法 ..................................................................................... 7
3. 函数的调用关系图 ................................................................................... 11
4. 调试分析 ..................................................................................................... 12
5. 测试结果 ..................................................................................................... 13
6. 源程序(带注释 ......................................................................................... 17
总 结 ......................................................................................................................... 25
参考文献 ..................................................................................................................... 26
致 谢 ......................................................................................................................... 27
附录(可视化代码): ............................................................................................. 28
摘 要
目前,计算器应用很广泛,本程序是关于这方面的,其主要功能是进行简单的四则运算 ,其特点之一是支持带括号的四则运算;二是用到栈的一些相关操作,不但对操作有提示,还对与异常输入信息报错。
通过该题目的设计过程,可以加深理解线性表及栈的逻辑结构、存储结构,掌握线性表及栈上基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养学生的动手能力。
关键字:迷你计算器,堆栈,初始化栈,入栈,出栈。 前 言
很多涉及计算器程序的的算法都是以栈的相关操作为基础,通过计算器的设计,有利于在学习中更好的理解栈及其相关的操作。
通过对计算器计算过程演示,看到了到它的一些性能及相关优势。
我们在写程序时,大框架已成的情况下,仍然发现有些错误很难找到,对于这样的问题,可以利用计算机纠错功能,先运行,再根据题提示修改和完善程序。
在计算器用到的算法中,c语言算法可读性很强,一方面,是因为c语言是高级语言,是面向程序员的语言,二是c语言的功能是很完备的,可以达到事半功倍的效果,和其他语言相比量是比较少。栈的应用使该程序更出色。 正 文
1. 采用类c语言定义相关的数据类型
计算器的演示功能如下:
A. 提示输入格式
B. 提示输入
C. 显示输入信息
D. 对有异常的输入报错并重新输入
E. 使用顺序栈实现数据的输入
(1)/*定义堆栈*/
typedef struct{
double data[M];
int top;
}Stack;
(2)/*初始化堆栈*/
InitStack(Stack *s)
{
s->top=0;
}
(3)/*判断栈是否为空*/
int StEmpty(Stack *s)
{
if(s->top==0)
{
return 1;
}
else
{
return 0;
}
}
(4)/*入栈操作*/
StPush(Stack *s,double x)
{
if(s->top==M)
{
printf("The stack is overflow!"); }
else
{
s->top=s->top+1;
s->data[s->top]=x;
}
}
(5)/*出栈操作*/
double StPop(Stack *s)
{
double t;
if(!StEmpty(s))
{
t=s->data[s->top];
s->top=s->top-1;
}
else
{
printf("StPop:The stack is empty!");
t=NULL;
}
return t;
} 2. 各模块的伪码算法
(1)/*定义堆栈*/
typedef struct{
double data[M];
int top;
}Stack;
(2)/*初始化堆栈*/
InitStack(Stack *s)
{
s->top=0;
}
(3)/*判断栈是否为空*/
int StEmpty(Stack *s)
{
if(s->top==0)
{
return 1;
}
else
{
return 0;
}
}
(4)/*入栈操作*/
StPush(Stack *s,double x)
{
if(s->top==M)
{
printf("The stack is overflow!");
}
else
{
s->top=s->top+1;
s->data[s->top]=x;
}
}
(5)/*出栈操作*/
double StPop(Stack *s)
{
double t;
if(!StEmpty(s))
{ t=s->data[s->top];
s->top=s->top-1;
}
else
{
printf("StPop:The stack is empty!");
t=NULL;
}
return t;
}
(6)/*获取栈顶元素*/
double StGetTop(Stack *s)
{
double t;
if(!StEmpty(s))
{
t=s->data[s->top];
}
else
{
printf("StGeTop:The stack is empty!");
t=NULL;
}
return t;
}
(7)/*将数字字符转换成整形*/
int ChrTransferint(char c)
{
int n;
switch(c)
{
case '0': n=0;break;
case '1': n=1;break;
case '2': n=2;break;
case '3': n=3;break;
case '4': n=4;break;
case '5': n=5;break;
case '6': n=6;break;
case '7': n=7;break;
case '8': n=8;break;
case '9': n=9;break;
}
return n;
}