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

C语言如何不使用if/else或switch case计算三个数的最大值

无分支实现三整数最大值计算

你写的两数最大值计算用纯算术运算实现,全程没有分支判断,完全符合要求。求三个数的最大值不需要额外引入新逻辑,直接嵌套复用这套两数求最大值的规则就行:先算出前两个数的最大值,再把这个临时结果和第三个数做一次两数最大值运算,得到的就是三个数里的最大值。

完整实现代码

#include <stdio.h>
#include <stdlib.h>

int main() {
    int num1, num2, num3, max;
    scanf("%d %d %d", &num1, &num2, &num3);
    // 先计算前两个数的最大值
    int temp_max = (num1 + num2 + abs(num1 - num2)) / 2;
    // 再用临时最大值和第三个数比较,得到三者最大值
    max = (temp_max + num3 + abs(temp_max - num3)) / 2;
    printf("%d\n", max);
    return 0;
}

原理解释

  • 你用的两数最大值公式本质是靠算术运算自动选值:当a >= b时,abs(a-b) = a-b,代入公式得(a + b + a - b)/2 = a;当b > a时,abs(a-b) = b -a,代入得(a + b + b -a)/2 = b,整个过程没有任何条件跳转,完全是算术计算。
  • 嵌套调用这套公式不会引入任何if/else、switch分支结构,和你原本的两数实现思路完全一致。

提示:如果输入的整数数值较大,两数相加可能超过int类型的取值上限触发溢出,这种场景下可以将变量类型替换为long long,同时把scanf/printf里的格式符改为%lld即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:15:42