首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮小弟我看看代码哈,可以编译,测试不行

2012-04-11 
帮我看看代码哈,可以编译,测试不行功能 输入 1 2 - 4 5 + * 得到 (1-2)+(4+5)我输入的测试字符是1 2 - 4 5

帮我看看代码哈,可以编译,测试不行
功能 输入 1 2 - 4 5 + * 得到 (1-2)+(4+5)

我输入的测试字符是 1 2 - 4 5 + * Ctrl +d 回车  
结果没有反映!!!

C/C++ code
#include <stdio.h> #include <stdlib.h> #include <ctype.h>#define MAXOP 100#define NUMBER '0'#define MAXVAL 100#define BUFSIZE 100int getop(char []);void push(double);double pop(void);int getch(void);void ungetch(int);char buf[BUFSIZE];int bufp = 0;main(){    int type;    double op2;    char s[MAXOP];    while((type) == getop(s) != EOF){        switch (type){            case NUMBER:                push(atof(s));                break;            case '+':                push(pop() + pop());                break;            case '*':                push(pop() * pop());                break;            case '-':                op2 = pop();                push(pop() - op2);                break;            case '/':                op2 = pop();                if(op2 != 0.0)                    push(pop() / op2);                else                    printf("error: zero divisor\n");                break;            case '\n':                printf("\t%.8g\n",pop());                break;        }    }    return 0;}int sp = 0;double val[MAXVAL];void push(double f){    if(sp < MAXVAL)        val[sp++] = f;    else        printf("error: stack full,can't push %g\n",f);    }double pop(void){    if(sp > 0)        return val[--sp];    else{        printf("error: stack empty\n");        return 0.0;        }}int getop(char s[]){    int i,c;    while((s[0] = c = getch()) == ' ' || c == '\t')        ;    s[1] = '\0';    if (! isdigit(c) && c != '.')        return c;    i = 0;    if(isdigit(c))        while(isdigit(s[++i] = c = getch()))            ;    if(c == '.')        while(isdigit(s[++i] = c = getch()))            ;    s[i] = '\0';    if(c != EOF)        ungetch(c);    return NUMBER; }int getch(void){    return (bufp > 0) ? buf[--bufp] : getchar();}void ungetch(int c){    if(bufp >= BUFSIZE)        printf("ungetch: too many characters \n");    else         buf[bufp++] = c;}


[解决办法]
C/C++ code
while((type) == getop(s) != EOF) //此处==得换成= ((type = getop(s)) != EOF 

热点排行