迷你计算器说明书

  • 格式: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;

}