简单计算器
简单计算器
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语法的使用。
查看22道真题和解析