2301_78694781 2023-10-28 20:53 采纳率: 91.7%
浏览 7
已结题

我这个该如何用c语言去描述她的一个计算的顺序呢

img


想要利用if和switch去描述计算的先后顺序,我应该采用什么样的方式去进行呢,需要分别判断第一个与第二个的计算符号吗,语言是c语言

  • 写回答

4条回答 默认 最新

  • 关注

    可以先判断第二个运算符,如果第二个运算符是乘法或者除法,就先计算b和c。否则就依次计算。
    运行结果:

    img

    使用if else 和switch的代码:

    #include <stdio.h>
    int main()
    {
        double a,b,c;
        char op1,op2; //2个操作符
        double res; //结果
        scanf("%lf%c%lf%c%lf",&a,&op1,&b,&op2,&c);
        if(op2=='*'||op2=='/') //如果第二个操作符是乘法或者除法,先计算后面的操作,因为前面的不管是什么运算符,都不影响最终结果
        {
            if(op2=='*')
                res = (double)b*c;
            else
            {
                if(c==0)
                {
                    printf("除数不能为0\n");
                    return 0;
                }else
                    res = (double)b/c;
            }
            switch(op1) //处理第一个操作符
            {
            case '+':
                res = a + res;break;
            case '-':
                res = a - res;break;
            case '*':
                res = a * res;break;
            case '/':
                res = a / res;break;
            }
        }else
        {
            //依次计算,先计算第一个运算符
            switch(op1)
            {
            case '+':
                res = a + b;break;
            case '-':
                res = a - b;break;
            case '*':
                res = a * b;break;
            case '/':
                if(b==0)
                {
                    printf("除数不能为0\n");
                    return 0;
                }
                else
                    res = a / b;
                break;
            }
            //处理第二个运算符
            switch(op2)
            {
            case '+':
                res = res + c;break;
            case '-':
                res = res - c;break;
            }
        }
        printf("%g%c%g%c%g=%g",a,op1,b,op2,c,res);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月28日