user-0 提问: 快崩溃了！！！求助啊！！明天交了。栈的后缀式求值，，运行没错误，但就是不能出结果，请各位大神帮帮！！！

回复:
user: user-1
content: 引用 5 楼 u010291323 的回复:[quote=引用 4 楼 u011779875 的回复:] 第一 空格貌似没处理   第二 你这是C++的程序 别C没学好 就用C++ 这么会乱的 第三 你要把程序挺住看结果    这是C阿阿阿[/quote] 这还带引用的 这不是C 这是C++的特性 哥们 我帮你处理了 你不结贴 还做什么

user: user-0
content: 引用 4 楼 u011779875 的回复:第一 空格貌似没处理   第二 你这是C++的程序 别C没学好 就用C++ 这么会乱的 第三 你要把程序挺住看结果    这是C阿阿阿

user: user-1
content: 第一 空格貌似没处理   第二 你这是C++的程序 别C没学好 就用C++ 这么会乱的 第三 你要把程序挺住看结果

user: user-1
content: // ConsoleApplication1.cpp : 定义控制台应用程序的入口点。 //  #include "stdafx.h"   #include <stdio.h> #include <malloc.h> #include <ctype.h> #include <windows.h>  #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10  typedef struct {     char *base;     char *top;     int stacksize; }OPTR;//运算符栈  typedef struct {     int *base;     int *top;     int stacksize; }OPND;//运算数栈  OPTR optr; OPND opnd;  int InitStack(OPTR &S)//运算符 {     S.base = (char *)malloc(STACK_INIT_SIZE * sizeof(char));     if(!S.base) return 0;     S.top = S.base;     S.stacksize = STACK_INIT_SIZE;     return 1; }  int InitStack(OPND &S)//运算数 {     S.base = (int *)malloc(STACK_INIT_SIZE * sizeof(int));     if(!S.base) return 0;     S.top = S.base;     S.stacksize = STACK_INIT_SIZE;     return 1; }  int StackEmpty(OPTR &S) {     if(S.base == S.top) return 1;     else return 0; }  int StackEmpty(OPND &S) {     if(S.base == S.top) return 1;     else return 0; }  int Push1(OPTR &S,char e) {     if(S.top - S.base >= S.stacksize)     {         S.base = (char *)realloc(S.base,(S.stacksize + STACKINCREMENT) * sizeof(char));         if(!S.base) return 0;         S.top = S.base + S.stacksize;         S.stacksize += STACKINCREMENT;     }     *S.top++ = e;     return 1; }  int Push2(OPND &S,int e) {     if(S.top - S.base >= S.stacksize)     {         S.base = (int *)realloc(S.base,(S.stacksize + STACKINCREMENT) * sizeof(int));         if(!S.base) return 0;         S.top = S.base + S.stacksize;         S.stacksize += STACKINCREMENT;     }     *S.top++ = e;     return 1; }  int Pop1(OPTR &S,char &e) {     if(S.top == S.base) return 0;     e = *--S.top;     return e; }  int Pop2(OPND &S,int &e) {     if(S.top == S.base) return 0;     e = *--S.top;     return e; }  char GetTop1(OPTR &S) {     char e;     e = *(S.top - 1);     return e; }  int GetTop2(OPND &S) {     int e;     e = *(S.top - 1);     return e; }  char Precede(char ch1,char ch2) {     if(ch1 == '+' || ch1 == '-')     {         if(ch2 == '+' || ch2 == '-' || ch2 ==')' || ch2 == '#') return ('>');         else if(ch2 == '*' || ch2 == '/' || ch2 =='(') return ('<');     }     else if(ch1 == '*' || ch1 == '/')     {         if(ch2 == '+' || ch2 == '-' || ch2 == '*' || ch2 == '/' || ch2 ==')' || ch2 == '#') return ('>');         else if(ch2 =='(') return ('<');     }     else if(ch1 =='(')     {         if(ch2 == '+' || ch2 == '-' || ch2 == '*' || ch2 == '/' || ch2 =='(') return ('<');         else if(ch2 ==')') return ('=');     }     else if(ch1 ==')')     {         if(ch2 == '+' || ch2 == '-' || ch2 == '*' || ch2 == '/' || ch2 ==')' || ch2 == '#') return ('>');     }     else if(ch1 =='#')     {         if(ch2 == '+' || ch2 == '-' || ch2 == '*' || ch2 == '/' || ch2 =='(') return ('<');         else if(ch2 =='#') return ('=');     }     else if(!((ch1 == '+' || ch1 == '-' || ch1 == '*' || ch1 == '/' || ch1 == '(' || ch1 ==')' || ch1 == '#') && (ch2 == '+' || ch2 == '-' || ch2 == '*' || ch2 == '/' || ch2 == '(' || ch2 ==')' || ch2 == '#'))) return 0;     return 0; }  char In(char c) {     if(c == '+' || c == '-' || c == '*' || c == '/' || c == '(' || c ==')' || c == '#') return 1;     else return 0; }  int Operate(int a, char theta, int b) {     if(theta == '+') return (a + b);     else if(theta == '-') return (a - b);     else if(theta == '*') return (a * b);     else if(theta == '/') return (a / b);     else return 0; }  int EvaluateExpression() {      int a, b, c;     char theta, x;     InitStack(optr);     InitStack(opnd);     Push1(optr,'#');      c = getchar();      while(c != '#' || GetTop1(optr) != '#')     { 	         if(!In(c))  		{ ////////////////////////////////// 			if(isspace(c)){ 			c = getchar(); 			continue; 			} ///////////////////////////////////这是我帮你改的 得把空格32吃掉 			Push2(opnd,c); 		 			c = getchar(); 		}          else          switch(Precede(GetTop1(optr),c))         {        case '<':         Push1(optr,c); c = getchar();         break;        case '=':         Pop1(optr,x); c = getchar();         break;        case '>':         Pop1(optr,theta);         Pop2(opnd,b);         Pop2(opnd,a);         Push2(opnd,Operate(a,theta,b));         break;         }     } 	printf("end /n");     return GetTop2(opnd);     return 0; }  int main() {     printf("输入表达式:");     printf("the result: %d\n",EvaluateExpression()); 	printf("end /n"); 	//system("pause"); 	system("pause"); 让程序停下来看结果     return 0; }

user: user-2
content: 着重调试下面两个函数  Precede(char ch1,char ch2) int EvaluateExpression()

user: user-1
content: 你把你错误的输入格式写上啊  还有这个程序是你自己写的？ 还是怎么来的