我想计算C编程中给定的三个整数中的最大值,而不使用任何if/else条件或switch大小写.例如,以这种方式.

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

int main() {

    int num1, num2, max;
    scanf("%d %d", &num1, &num2);
    max = (num1 + num2 + abs(num1 - num2)) /2;
    printf("%d\n", max);
    
    return 0;
}

这是我计算给定两个整数的最大值的代码.

推荐答案

可以调用max函数两次:

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

int main() {

    int num1, num2, num3, max;
    scanf("%d %d %d", &num1, &num2, &num3);
    max = (num1 + num2 + abs(num1-num2))/2;
    max = (max + num3 + abs(max-num3))/2;
    printf("%d\n", max);
    
    return 0;
}

C++相关问答推荐

uintPtr_t上的算术

在CIL中运行时,sscanf返回0

自定义应用程序上的日志(log)轮换问题

为什么sscanf不能正确地从这个字符串格式中提取所有数字?

为什么我会收到释放后堆使用错误?

1处的解析器错误:yacc语法的语法错误

函数的限制限定指针参数允许优化调用方函数吗?

如何确保在C程序中将包含uft8字符的字符串正确写入MySQL?

类型定义 struct 与简单的类型定义 struct

循环中的静态变量与块中的变量和循环

为什么电路板被循环删除?

如何在zOS上编译共享C库

从整型转换为浮点型可能会改变其值.

与外部SPI闪存通信时是否应禁用中断?

当我将偏移量更改为任何非零值时,C中的mmap共享内存出现无效参数错误

C中的数组下标和指针算法给出了不同的结果

如何找出C中分配在堆上的数组的大小?

Struct 内的数组赋值

使用替代日历打印日期

malloc 属性不带参数