算术表达式 --求~~~助T^T
我整了个早上,唉唉唉。求大神帮助
void Evaluateexpression_r(){
//算术表达式求值的算符优先算法,设OPTR和OPND分别为运算符栈和运算数栈
char c, d[100];
int i, f, num, tmpa, tmpb;
Stack OPTR, OPND;
InitStack(OPTR);
InitStack(OPND);
Push(OPTR, '#');
c=getchar();
while(c!='#'||GetTop(OPTR)!='#') {
if(c>='0'&&c<='9') {
i=0;
do{
d[i++]=c;
c=getchar();
}while(c>='0'&&c<='9');
d[i]='\0';
num=atoi(d);
Push(OPND, num);
}//if
else if(In(c)) {
switch(Precede(GetTop(OPTR), c)){
case '<'://栈顶元素优先权低
Push(OPTR, (int)c);c=getchar();
break;
case '=': //脱括号并接收下一字符
Pop(OPTR, f);c=getchar();
break;
case '>': //退栈并将运算结果入栈
Pop(OPTR, f);
Pop(OPND, tmpb); Pop(OPND, tmpa);
Push(OPND, Operate(tmpa, f, tmpb));
break;
}//switch
}//else if
}//while
c=getchar();//接收最后输入的一个回车符!!!否则在主函数中只能输入一次...
printf("所求表达式的值为:");
ShowStack(OPND);
printf("\n");
}
int main(){
char ch;
printf("请输入表达式,以 # 结束...\n");
//循环输入表达式,用while语句
Evaluateexpression_r();
printf("\n是否结束算术表达式的求值,以 y 结束...\n");
ch=getchar();
while(ch !='y'){printf(" 请再次输入表达式,以 # 结束...\n");
Evaluateexpression_r();
}
//while
return 0;
}//main
在MIAN 函数里面 “是否结束表达式值”我输入了不是Y的,就执行不了表达式的输入(输入不了)
[ 本帖最后由 sgm22 于 2013-11-30 11:18 编辑 ]