You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多分支条件的四则运算C代码简化为单一函数实现?

简化C语言四则运算的分支逻辑

方法1:使用函数指针数组(推荐,兼顾可读性与扩展性)

把四则运算封装成独立函数,再用存储函数指针的映射表替代多分支if,逻辑更简洁也更容易扩展:

#include <stdio.h>

// 定义四则运算函数
double add(double a, double b) { return a + b; }
double sub(double a, double b) { return a - b; }
double mul(double a, double b) { return a * b; }
double div(double a, double b) { return a / b; }

int main() {
    double num1, num2, result;
    char op;
    // 构建运算符与对应计算函数的映射表
    struct {
        char op;
        double (*calc)(double, double);
    } ops[] = {{'+', add}, {'-', sub}, {'*', mul}, {'/', div}};
    int ops_len = sizeof(ops) / sizeof(ops[0]);

    printf("输入运算式(例:3 + 5):");
    scanf("%lf %c %lf", &num1, &op, &num2);

    // 遍历映射表匹配运算符
    for (int i = 0; i < ops_len; i++) {
        if (ops[i].op == op) {
            // 单独处理除零错误
            if (op == '/' && num2 == 0) {
                printf("错误:除数不能为0\n");
                return 1;
            }
            result = ops[i].calc(num1, num2);
            printf("%.2lf %c %.2lf = %.2lf\n", num1, op, num2, result);
            return 0;
        }
    }

    printf("错误:无效运算符\n");
    return 1;
}

方法2:一行表达式实现(仅作演示,可读性较差)

利用嵌套三元运算符压缩逻辑,但仅适合简单场景,复杂判断会大幅降低代码可读性:

#include <stdio.h>

int main() {
    double num1, num2, result;
    char op;
    printf("输入运算式(例:3 + 5):");
    scanf("%lf %c %lf", &num1, &op, &num2);

    // 提前处理除零异常
    if (op == '/' && num2 == 0) {
        printf("错误:除数不能为0\n");
        return 1;
    }
    // 一行嵌套三元完成运算判断
    result = (op == '+' ? num1 + num2 : (op == '-' ? num1 - num2 : (op == '*' ? num1 * num2 : num1 / num2)));
    printf("%.2lf %c %.2lf = %.2lf\n", num1, op, num2, result);
    return 0;
}

补充说明

  • 函数指针数组的方式扩展性极强,后续新增运算(如取模%)只需添加对应函数和映射项,无需修改核心分支逻辑。
  • 一行表达式仅适合快速实现简单场景,生产环境中不推荐,不利于后续维护和调试。

内容的提问来源于stack exchange,提问作者horsse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:55:16