vIllaInssss
2020-04-09 01:16
采纳率: 64.7%
浏览 551

为什么在 Dev c++里运行不了?

#include
#include
#include
using namespace std;
int factor()//读入一个因子返回其值
{
int result=0;
char c=cin.peek();
if(c=='(')
{
cin.get();
result=expression();
cin.get();
}
else
{
while(isdigit(c))
{
result=10*result+c - '0';c
cin.get();
c=cin.peek();
}
}
return result;
}

int term()//一项
{
int result=factor();
while(1)
{
char op=cin.peek();
if(op=='*'||op=='/')
{
cin.get();
int value=factor();
if(op=='*')
result*=value;
else result/=value;
}
else break;
}
return result;
}
int expression()//表达式
{
int result=term(); //求第一项的值
while(1)
{
char op=cin.peek();
if(op=='+'||op=='-')
{
cin.get();
int value=term();
if(op=='+') result+=value;
else result-=value;
}
else break;
}
return result;
}

int main()
{
cout<<expression()<<endl;
return 0;
}


  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 小学狗喵喵叫 2020-04-09 09:32
    已采纳

    在int factor()前加

    int expression();
    

    去掉

    result=10*result+c - '0';c
    

    最后面的c

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 白色一大坨 2020-04-09 10:11

    编译通是没问题,但你几个函数循环调用,确定不会出问题,自己试试:

    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    
    using namespace std;
    int term();//一项 
    int expression();//表达式 
    int factor();//读入一个因子返回其值 
    
    
    int main()
    {
        cout << expression() << endl;
        return 0;
    }
    
    int expression()//表达式 
    {
        int result = term(); //求第一项的值
        while (1)
        {
            char op = cin.peek();
            if (op == '+' || op == '-')
            {
                cin.get();
                int value = term();
                if (op == '+') result += value;
                else result -= value;
            }
            else break;
        }
        return result;
    }
    
    int factor()//读入一个因子返回其值 
    {
        int result = 0;
        char c = cin.peek();
        if (c == '(')
        {
            cin.get();
            result = expression();
            cin.get();
        }
        else
        {
            while (isdigit(c))
            {
                result = 10 * result + c - '0';
                cin.get();
                c = cin.peek();
            }
        }
        return result;
    }
    
    
    int term()//一项 
    {
        int result = factor();
        while (1)
        {
            char op = cin.peek();
            if (op == '*' || op == '/')
            {
                cin.get();
                int value = factor();
                if (op == '*')
                    result *= value;
                else result /= value;
            }
            else break;
        }
        return result;
    }
    
    
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题