注意数据类型用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;

}