2栈的应用上机实验要求

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⏹设计要求

首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。

主控菜单设计要求:程序运行后,显示一个标题“判断表达式括号匹配”,标题下方给出4个菜单项的内容和输入提示:

1.输入表达式

2.输出表达式

3.判断表达式的括号是否匹配并计算表达式的值

4.退出

请选择1—4:

⏹功能要求

完成各菜单的功能,能正确判断表达式的括号匹配(括号限圆括弧和方括弧两种),

若匹配,利用算符优先法计算表达式的值。

计算表达式值的3个相关函数(后面已给出,可以直接粘贴到程序中使用):

I n(c)---- //判断c是否为运算符

Precede(θ1, θ2) ----//判断两运算符θ1, θ2的优先关系

Operate(a, θ, b)---- //做四则运算a theta b,返回运算结果

⏹实现要求

1)可用VC++的引用或c语言用指针实现各功能的调用

2)必须用栈实现括号匹配和表达式计算

⏹实验提交要求

1)画流程图

2)实现功能的全部程序

3)说明程序设计过程中的难点、解决办法及编程小结或体会。

4)实验及报告必须于2015.4.29提交

Status In(SElemType c) //判断c是否为运算符

{

switch(c)

{

case'+':

case'-':

case'*':

case'/':

case'(':

case')':

case'#':

return TRUE;

default:

return FALSE;

}

}

char Precede(SElemType t1, SElemType t2) //判断两符号的优先关系{

SElemType f;

switch(t2)

{

case'+':

case'-':

if(t1=='('||t1=='#')

f='<';

else

f='>';

break;

case'*':

case'/':

if(t1=='*'||t1=='/'||t1==')')

f='>';

else

f='<';

break;

case'(':

if(t1==')')

{ printf("括号不匹配\n");

exit(OVERFLOW);

}

else

f='<';

break;

case')':

switch(t1)

{

case'(':

f='=';

break;

case'#':

printf("缺乏左括号\n");

exit(OVERFLOW);

default:

f='>';

}

break;

case'#':

switch(t1)

{

case'#':

f='=';

break;

case'(':

printf("缺乏右括号\n");

exit(OVERFLOW);

default:

f='>';

}

}

return f;

}

SElemType Operate(SElemType a,SElemType theta,SElemType b) //做四则运算a theta b,返回运算结果{

SElemType c;

switch(theta)

{

case'+':

return a+b;

case'-':

return a-b;

case'*':

return a*b;

}

return a/b;

}

教师:曹妍2015.4.10

相关文档
最新文档