qq_42963394 2018-12-16 05:59 采纳率: 0%
浏览 1323

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

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-12-16 06:05
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了