c语言 bug
大佬们,我这个程序是求两数组间最小距离的,然后有bug,求值是错的,我感觉我编写的好像没啥问题,大佬们能帮我看看吗样例输入
5 5
1 2 3 4 5
6 7 8 9 10
#include<stdio.h>
#include<math.h>
//计算两数组间最小间隔
int main(void)
{
int m, n;
int arr_m, arr_n;
int min;
int a;
scanf("%d%d", &m, &n);
for (int i = 0; i < m; i++)
{
scanf("%d", &arr_m);
}
for (int i = 0; i < n; i++)
{
scanf("%d", &arr_n);
}
//循环嵌套
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (i == 0 && j == 0)
{
min = fabs(arr_m - arr_n);
}
if (fabs((arr_m - arr_n) < min))
{
min = fabs(arr_m - arr_n);
}
}
}
printf("%d", min);
return 0;
} 看一下第 32 行的判断条件想表达什么? dolly_yos2 发表于 2022-10-8 11:02
看一下第 32 行的判断条件想表达什么?
当发现两个两个数组中的数相减的绝对值小于已发现的最小值的时候,最小值改为这两个数的差的绝对值,是我的表达式写的有问题吗? 什么是“两个数组间的最小距离”,请楼主以提供的样例数据为例,说明一下,就这 2 组数据而言,预期的正确结果是什么? jackz007 发表于 2022-10-8 11:14
什么是“两个数组间的最小距离”,请楼主以提供的样例数据为例,说明一下,就这 2 组数据而言,预期 ...
https://s1.ax1x.com/2022/10/08/x8oPsA.png 航航. 发表于 2022-10-8 11:11
当发现两个两个数组中的数相减的绝对值小于已发现的最小值的时候,最小值改为这两个数的差的绝对值,是我 ...
是的,至少这个表达式实际的含义和您描述的并不相符 本帖最后由 jackz007 于 2022-10-8 12:00 编辑
第 32 行有误
if (fabs((arr_m - arr_n) < min))
应该改为:
if (fabs(arr_m - arr_n) < min)
楼主试试这个代码
#include <stdio.h>
int main(void)
{
int d , e , i , j , m , n ;
scanf("%d%d" , & m , & n) ;
int a , b ;
for(i = 0 ; i < m ; i ++) scanf("%d" , & a) ;
for(i = 0 ; i < n ; i ++) scanf("%d" , & b) ;
for(d = (a > b) ? a - b : b - a , i = 0 ; i < m ; i ++) {
for(j = 0 ; j < n ; j ++) {
e = (a > b) ? a - b : b - a ;
if(e < d) d = e ;
}
}
printf("%d\n" , d) ;
} 本帖最后由 航航. 于 2022-10-8 13:12 编辑
dolly_yos2 发表于 2022-10-8 11:51
是的,至少这个表达式实际的含义和您描述的并不相符
jackz007 发表于 2022-10-8 11:57
第 32 行有误
应该改为:
好的好的,对了,谢谢大佬哈,没看出来那个括号的问题
页:
[1]