(强烈推荐)算数表达式的求解毕业论文报告 联系客服

发布时间 : 星期三 文章(强烈推荐)算数表达式的求解毕业论文报告更新完毕开始阅读76cb44426d175f0e7cd184254b35eefdc8d315cb

○6入栈函数 void Push(Stack *s, int x); ○7出栈函数 int Pop(Stack *s);

○8取栈顶元素函数 int GetTop(Stack *s) ; ○9判栈空函数 void Empty(Stack *s); ○10主函数 int main() 3)函数之间主要调用的关系图

本程序主要包含10个程序,各程序之间的关系如图所示:(部分函数用以上的编号表示)

1 ○2 ○3 ○5 ○6 ○7 ○8 ○9 ○

图2:函数之间调用关系图

3、详细设计和编码 (1)、结构体类型的定义 typedef struct {

int data[MAXSIZE]; int top; int base; 栈底

}Stack;

(2)、全局变量定义 以下为函数声明

void InitStack(Stack *); 初始化栈 int Empty(Stack *); 判空栈 void Push(Stack *, int ); 进栈 int Pop(Stack *);出栈

int GetTop(Stack *); 取栈顶元素

int Operate(int ,char ,int ); 计算结果 char Proceed(char ,char ); 比较优先级 int In(char ); 判断输入符

int EvalExpres(void); 表达式计算函数 定义两个栈分别存放运算符和操作数 Stack StackR,StackD;

(3)、系统主要子程序的详细设计 1)、主函数模块设计

int main()主函数 {

int v; char ch; while(1) {

printf(\欢迎使用算术表达式的求解的小程序

************\\n\

v = EvalExpres();

printf(\表达式的计算结果为:%d\

printf(\do

{

scanf(\if(ch == 'n' || ch == 'N')

exit(0);

}while(ch!='\\n'); }

在主函数中,设定用户操作界面的形式,通过调用表达式求解的子函数实现算法所要实现的功能,然后通过while()循环语句控制,可以实现多次调试。 2)、计算函数模块

int Operate(int a,char a1,int b) {

int s; int d1 = a;

int d2 = b; 把字符ab变为对应数字 switch(a1) { case '+':

s = d1+d2; break; }

return 0;

system(\

case '-':

}

s = d2-d1; break;

case '*':

s = d1*d2; break;

case '': }

return (s+'0'); 将运算结果转化为ascii码的形式入栈,

s = d2d1;

在计算函数中,定义3个变量,表示基本运算中的变量。采用开关语句实现表达式的基本运算,将运算结果转化为ASCII的形式返回。 3)、表达式求解的函数模块

int EvalExpres(void) 表达式求解函数 {

int a,b,i=0,s=0; char c[80],r;

InitStack(&StackR); 初始化栈

Push(&StackR,'#'); 将表达式起始符压入栈 InitStack(&StackD);

printf(\请输入表达式并以‘#’结束:\gets(c);

while(c[i]!='#' || GetTop(&StackR)!='#') {

if(!In(c[i])) 判断读入的字符是不是运算符 不是则进opnd栈