C语言的问题求大神帮忙,用C语言编写一个四则运算程序,输出计算结果。

2024年11月16日 06:26
有1个网友回答
网友(1):

#include "stdio.h"
#include "stdlib.h"

char token;

int exp();
int term();
int factor();

void error()
{
     fprintf(stderr,"Error\n");
     exit(1);
}

//
void match(char expecttoken)
{
    if ( token == expecttoken)
    {
          token = getchar();
    }
     else
     {
          error();
     }
}


int main()
{
    int result;
     token = getchar();
     result = exp();
     if ( token == '\n')
     {
          printf("result=%d",result);
          return 0;
     }
     else error();
     return 0;
}

int exp()
{
    int temp = term();
     while((token=='+'||token=='-'))
     switch(token)
     {
        case '+':
               match('+');
                    temp+=term();
               break;
          case '-':
               match('-');
               temp -=term();
               break;
     }
     return temp;
}

int term()
{
     int temp = factor();
     while(token == '*')
     {
          match('*');
          temp*=factor();
     }
     return temp;
}

int factor()
{
     int temp;
     if (token == '(')
     {
          match('(');
        temp = exp();
          match(')');
     }
     else if( isdigit(token))
     {
        ungetc(token,stdin);
          scanf("%d",&temp);
          token = getchar();
     }
     else error();
     return temp;
}

出自大名鼎鼎的编译原理作者之手。