小编典典

如何找到哪个值最接近C中的数字?

algorithm

我在C中有以下代码:

#define CONST 1200
int a = 900;
int b = 1050;
int c = 1400;

if (A_CLOSEST_TO_CONST) {
  // do something
}

检查a,b和c中a是否最接近CONST的便捷方法是什么?

编辑:

我有3个变量或像这样的数组都没关系(可能超过3个元素):

int values[3] = {900, 1050, 1400};

阅读 279

收藏
2020-07-28

共1个答案

小编典典

这适用于三个变量:

if (abs(a - CONST) <= abs(b - CONST) && abs(a - CONST) <= abs(c - CONST)) {
    // a is the closest
}

这适用于一个或多个元素的数组,其中n是元素数:

int is_first_closest(int values[], int n) {
    int dist = abs(values[0] - CONST);
    for (int i = 1; i < n; ++i) {
        if (abs(values[i] - CONST) < dist) {
            return 0;
        }
    }
    return 1;
}

看到它在线上工作:ideone

2020-07-28