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