0

我应该编写一个传递两个参数的函数:一个 int 值的一维数组和一个整数值。该函数在数组中查找与第二个参数值最接近的值。我的代码有效,但当我输入数字 1-5 时,我的输出为 0。当我输入大于 5 的数字时,我开始得到准确的结果。我不太清楚为什么会发生这种情况,但这是我到目前为止的代码:

#include <iostream>
#include <cmath>
using namespace std;

const int MAX = 5;

int searchNearest(int anArray[],int key)
{
int value = abs(key - anArray[0]);
int num = 0;

for(int x = 0;x < MAX; x++)
{
    if(value > abs(key - anArray[x]))
    {
        value = abs(key - anArray[x]);
        num = anArray[x];
    }
}

return num;

}

int main()
{
int A[MAX] = {3,7,12,8,10};

int search;

int nearest;

cout << "Enter a number to search: ";

cin >> search;

nearest = searchNearest(A,search);

cout << "The nearest number is: " << nearest << endl;

system("pause");
return 0;

}
4

1 回答 1

5

在您的原始代码中,数字 1-5 最接近数组的第一个元素。正因为如此,if语句中的代码永远不会被执行,当你 return 时num,你会返回它的初始值,它恰好是0. 要解决此问题,只需进行不同的初始化num

int num = anArray[0];  // <-- used to be 0
于 2013-05-22T23:55:37.377 回答