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

如何优化三数找最大值的C语言程序?仅用条件语句简化代码

简化三数最大值判断的C语言代码

首先纠正你原代码里的关键错误:多处条件判断中误用了位与运算符&,这会导致逻辑错误,正确的逻辑与应该用&&。

下面是两种仅用条件语句实现的简化方案,兼顾可读性和简洁性:

方案一:区分唯一最大值与多个相等最大值

#include <stdio.h>

int main() 
{
    float a, b, c;
    printf("请输入三个数:\na: ");
    scanf("%f", &a);
    printf("b: ");
    scanf("%f", &b);
    printf("c: ");
    scanf("%f", &c);

    if (a == b && b == c) {
        printf("三个数相等\n");
    } 
    else if (a >= b && a >= c) {
        printf("%.2f 是最大值%s\n", a, (a == b || a == c) ? "(存在相等的最大值)" : "");
    } 
    else if (b >= a && b >= c) {
        printf("%.2f 是最大值%s\n", b, (b == a || b == c) ? "(存在相等的最大值)" : "");
    } 
    else {
        printf("%.2f 是最大值%s\n", c, (c == a || c == b) ? "(存在相等的最大值)" : "");
    }

    return 0;
}

优化点

  • 先处理最特殊的全相等场景,减少后续分支判断的复杂度
  • 用>=直接覆盖“最大值与其他数相等”的情况,无需单独写分支
  • 用三元运算符简化相等最大值的提示输出,代码更紧凑
  • 输入提示更直观,输出用%.2f控制小数精度,提升可读性
  • 修复了原代码中&的误用问题

方案二:仅输出最大值(不区分是否有相等值)

如果不需要区分最大值是否唯一,代码可以更简洁:

#include <stdio.h>

int main() 
{
    float a, b, c;
    printf("请输入三个数:\na: ");
    scanf("%f", &a);
    printf("b: ");
    scanf("%f", &b);
    printf("c: ");
    scanf("%f", &c);

    float max;
    // 先比较a和b,取较大值
    if (a >= b) {
        max = a;
    } else {
        max = b;
    }
    // 再将较大值和c比较,得到最终最大值
    if (c >= max) {
        max = c;
    }

    if (a == b && b == c) {
        printf("三个数相等\n");
    } else {
        printf("最大值是:%.2f\n", max);
    }

    return 0;
}

优化点

  • 通过两次简单的条件判断逐步筛选出最大值,逻辑清晰易懂
  • 单独处理全相等的特殊场景,避免输出冗余信息
  • 代码行数大幅减少,可读性显著提升

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:00:17