分析:

本题逻辑相比之前题型而言较为复杂,表达式输入完毕之后首先对运算符进行合法判断,接下来分别对加减乘除进行单独处理,此时可选if else嵌套或者switch进行处理,最后输出结果即可。

题解:

#include <bits/stdc++.h>
using namespace std;

int main() {
    double a = 0.0, b = 0.0;
    char op = 0;
    //循环输入表达式
    while(scanf("%lf%c%lf", &a, &op, &b) != EOF) {
        //如果表达式中存在非法的运算符则跳过
        if(op != '+' && op != '-' && op != '*' && op != '/') {
            printf("Invalid operation!\n");
            continue;
        }
        //依次判断运算符为加减乘除的情况,输出结果
        if(op == '+')
            printf("%.4lf+%.4lf=%.4lf\n", a,b,a+b);
        else if(op == '-')
            printf("%.4lf-%.4lf=%.4lf\n", a,b,a-b);
        else if(op == '*')
            printf("%.4lf*%.4lf=%.4lf\n", a,b,a*b);
        else {
            //除法运算注意分子不能为0
            if(b == 0.0)
                printf("Wrong!Division by zero!\n");
            else
                printf("%.4lf/%.4lf=%.4lf\n", a,b,a/b);
        }
    }
    return 0;
}

题解2:

#include <bits/stdc++.h>
using namespace std;

int main() {
    double a = 0.0, b = 0.0;
    char op = 0;
    //题解2思路和上述一直,这里没有使用if else嵌套而是使用了switch运算符
    //让代码看起来更加工整
    while(scanf("%lf%c%lf", &a, &op, &b) != EOF) {
        switch (op) {
            case '+': printf("%.4lf+%.4lf=%.4lf\n", a, b, a+b); break;
            case '-': printf("%.4lf-%.4lf=%.4lf\n", a, b, a-b); break;
            case '*': printf("%.4lf*%.4lf=%.4lf\n", a, b, a*b); break;
            case '/': 
                if(b != 0.0)
                    printf("%.4lf/%.4lf=%.4lf\n", a, b, a/b); 
                else
                    printf("Wrong!Division by zero!\n");
                break;
            default: printf("Invalid operation!\n"); break;
        }
    }
    return 0;
}

总结:

if else嵌套和switch语法的使用。