帮我写一个C语言的在一个非降序列中查找与给定值最接近的元素【样例输入】 3 1 5 8 4 10 5 3 6 【样例输出】 8 5 1 5
时间: 2024-01-10 12:02:25 浏览: 29
好的,这个问题很简单,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n, m, i, minIndex, minValue, tmp;
scanf("%d", &n);
int *a = (int*) malloc(n * sizeof(int));
for (i = 0; i < n; ++i)
{
scanf("%d", &a[i]);
}
scanf("%d", &m);
for (i = 0; i < m; ++i)
{
scanf("%d", &tmp);
minIndex = 0;
minValue = abs(a[0] - tmp);
for (int j = 1; j < n; ++j)
{
if (abs(a[j] - tmp) < minValue)
{
minValue = abs(a[j] - tmp);
minIndex = j;
}
}
printf("%d ", a[minIndex]);
}
free(a);
return 0;
}
```
代码解释:
首先读入序列的长度n,然后动态分配一个长度为n的数组a。
然后用循环读入序列中的每一个元素。
接下来读入要查询的数量m。
接着用循环读入每一个查询的值tmp。每次查询时,都要遍历整个序列,找到与查询值最接近的元素,并输出其值。
最后记得释放动态分配的内存,程序结束。
希望这个代码能够帮到您!
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)