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

Ben*_*ier 5 c algorithm comparison

我在C中有以下代码:

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

if (A_CLOSEST_TO_CONST) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

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

编辑:

如果我有3个变量或这样的数组(它可能超过3个元素)并不重要:

int values[3] = {900, 1050, 1400};
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 4

这适用于三个变量:

if (abs(a - CONST) <= abs(b - CONST) && abs(a - CONST) <= abs(c - CONST)) {
    // a is the closest
}
Run Code Online (Sandbox Code Playgroud)

这适用于包含一个或多个元素的数组,其中 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;
}
Run Code Online (Sandbox Code Playgroud)

查看它在线运行:ideone

  • @pinouchon:如果您使用 n 个元素的数组而不是 n 个变量,那就更好了。 (2认同)