c语言swtich制作计算器,急

键盘输入三个整数和两个算术运算组成的表达式,计算结果。 运算符包括:加+,减-乘*,除/

输入格式:
三个整数,两个运算符,组成算数表达式,输入的字符之间没有空格

输出格式:
在表达式的后边输出=计算结果

输入样例:
6+311
结尾无空行
输出样例:
6+3
11=39
结尾无空行

#include <stdio.h>

double calculate(double a, char op, double b)
{
    switch (op)
    {
    case '+':
        return a + b;
    case '-':
        return a - b;
    case '*':
        return a * b;
    case '/':
        return a / b;
    }
    return 0;
}

int main()
{
    double a, b, c, r;
    char op1, op2;
    scanf("%lf%c%lf%c%lf", &a, &op1, &b, &op2, &c);
    switch (op1)
    {
    case '+':
    case '-':
        switch (op2)
        {
        case '+':
        case '-':
            r = calculate(a, op1, b);
            r = calculate(r, op2, c);
            break;
        case '*':
        case '/':
            r = calculate(b, op2, c);
            r = calculate(a, op1, r);
            break;
        }
        break;
    case '*':
    case '/':
        r = calculate(a, op1, b);
        r = calculate(r, op2, c);
        break;
    }
    printf("%lg%c%lg%c%lg=%lg", a, op1, b, op2, c, r);
    return 0;
}
 #include <stdio.h>
int main()
{
    float  a,b;
    char op;
    END:printf("请输入算式:");
    scanf("%f%c%f",&a,&op,&b);
    switch(op)
    {
        case '+':
            printf("%g+%g=%g\n",a,b,a+b);break;
        case '-':
            printf("%g-%g=%g\n",a,b,a-b);break;
        case '*':
            printf("%g*%g=%g\n",a,b,a*b);break;
        case '/':
            if (0==b)
            printf("除数不能为零!\n");
            else
            printf("%g/%g=%g\n",a,b,a/b);
            break;
        default:
            printf("运算符错误!\n");
    }
    char ch;
    printf("是否继续运算(Y/N or y/n):");
    scanf("%1s",&ch); //%c改成%1s
    if(ch=='Y'||ch=='y')
    goto END;
    else
    printf("over!");
    return 0;
}

原文:https://ask.csdn.net/questions/7624001