简单计算器

简单计算器

http://www.nowcoder.com/questionTerminal/b8f770674ba7468bb0a0efcc2aa3a239

分析:

本题逻辑相比之前题型而言较为复杂,表达式输入完毕之后首先对运算符进行合法判断,接下来分别对加减乘除进行单独处理,此时可选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语法的使用。

全部评论

相关推荐

11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务