如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

2025-06-26 15:46:34
推荐回答(2个)
回答1:

只要遍历数组
然后将每个元素与要查询的值进行相减
取减得的绝对值最小的那个就是了

下面是一个简单的代码
#include
#include

int find(int *a,int n,int x)
{
int i;
int min=abs(*a-x);
int r=0;

for(i=0;i < n;++i)
{
if(abs(a[i]-x) < min)
{
min=abs(a[i]-x);
r=i;
}
}

return a[r];
}

int main(int argc,char **argv)
{
int a[20];
int i;

for(i=0;i < 20;++i)
{
a[i]=rand()%20;
printf("%d ",a[i]);
}
printf("\n");

printf("与5最接近的数是: %d\n",find(a,20,5));

return 0;
}

回答2:

只要遍历数组
然后将每个元素与要查询的值进行相减
取减得的绝对值最小的那个就是了

下面是一个简单的代码
#include
#include

int find(int *a,int n,int x)
{
int i;
int min=abs(*a-x);
int r=0;

for(i=0;i < n;++i)
{
if(abs(a[i]-x) < min)
{
min=abs(a[i]-x);
r=i;
}
}

return a[r];
}

int main(int argc,char **argv)
{
int a[20];
int i;

for(i=0;i < 20;++i)
{
a[i]=rand()%20;
printf("%d ",a[i]);
}
printf("\n");

printf("与5最接近的数是: %d\n",find(a,20,5));

return 0;
}