注意数据类型用double不用float,否则有一组样例不通过因为精度不够
两种解法:
一:
#include <stdio.h>
int main(){
double num1,num2,result;
char operator;
// 读取输入
scanf("%lf%c%lf", &num1, &operator, &num2);
// 根据运算符进行计算
switch (operator) {
case '+':
result = num1 + num2;
printf("%.4lf%c%.4lf=%.4lf\n", num1, operator, num2, result);
break;
case '-':
result = num1 - num2;
printf("%.4lf%c%.4lf=%.4lf\n", num1, operator, num2, result);
break;
case '*':
result = num1 * num2;
printf("%.4lf%c%.4lf=%.4lf\n", num1, operator, num2, result);
break;
case '/':
if (num2 == 0.0) {
printf("Wrong!Division by zero!\n");
} else {
result = num1 / num2;
printf("%.4lf%c%.4lf=%.4lf\n", num1, operator, num2, result);
}
break;
default:
printf("Invalid operation!\n");
break;
}
return 0;
}
二:
#include <stdio.h>
double cal(char p, double a, double b) {
if (p == '+') {
return a + b;
} else if (p == '-') {
return a - b;
} else if (p == '*') {
return a * b;
} else if (p == '/') {
return a / b;
}
return 0; // 显式返回一个值,避免未定义行为
}
int main() {
double a, b, sum;
char c;
scanf("%lf%c%lf", &a, &c, &b);
if (c == '/' && b == 0.0) {
printf("Wrong!Division by zero!\n");
} else if (c != '+' && c != '-' && c != '*' && c != '/') {
printf("Invalid operation!\n");
} else {
sum = cal(c, a, b);
printf("%.4lf%c%.4lf=%.4lf\n", a, c, b, sum);
}
return 0;
}

京公网安备 11010502036488号