C语言四则运算计算器的一个问题
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
    int a1,a2,a3;
    char op1,op2,op3;
    //为了保证结构,在最开始加上一个0+
    a1 = 0;
    op1 = '+';
    while(op1!='=')
    {
        scanf("%d %c",&a2,&op2);    //这里用一个空格来忽略空白符
        //计算乘除
        while(op2=='*' || op2=='/')
        {
            scanf("%d %c",&a3,&op3);
            if(op2=='*')
                a2 *= a3;
            else if(op2=='/')
                a2 /= a3;
            op2 = op3;    //此处注意
        }
        //将两项相加(减)
        if(op1=='+')
            a1 += a2;
        else if(op1=='-')
            a1 -= a2;
        op1 = op2;    //此处注意
    }
    printf("%d",a1);
    return 0;
}


我想请教一下,怎么样修改一下代码,使得输入的表达式不含“=”号也能运行并输出结果。如 输入 5+2/2 ,输出 =6.

代码非原创,原文出自:https://blog.csdn.net/dannis_bh/article/details/51002627

1个回答

如果不含=,那么怎么知道表达式输入完了呢。比如
5+2/2
那么怎么知道应该输出结果了,而不是也许用户希望输入5+2/21
而且,你这个代码似乎并不能计算带有优先级的表达式,5+2/2,它只能计算a+b a*b之类的单个运算。
建议你找一个别的代码吧。这类代码有很多。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_42963394: 仔细看了下,是可以算2个运算符,但是1+2*2+3/4肯定算不了,你试试看
10 个月之前 回复
qq_42963394
qq_42963394 它是可以计算带有优先级的表达式的哈
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!