我的代码的目标是在数组中的数字和整数之间获得两个最接近的差。这是我的代码。
#include <stdio.h>
int main()
{
int kilometre, exit_gas[7]={90,95,116,150,300,377,677},i,distance;
distance=(kilometre-exit_gas[0]);
printf("Enter your kilometre reading:");
scanf("%d",&kilometre);
for(j=1;j<8;++j){
if(abs(kilometre-exit_gas[j])<distance){
distance=abs(kilometre-exit_gas[j]);
printf("%d\n",distance);
}
}
return 0;
}
我的代码存在的问题是,它发现数组中的所有数字与整数(kilometre)之间存在差异。例如,如果千米为299,则上述代码的输出为:
204
183
149
1
所需的输出应为:
149
1
我知道我得到了帮助,204 183
因为他们也满足了限制条件,if(abs(kilometre-exit_gas[j])<distance)
那么我应该如何修改限制条件以获得所需的结果?
我不知道您如何获得显示在帖子中的结果,因为我得到了另一个结果。不过,该程序可以按照以下方式进行查找。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int exit_gas[] = { 90, 95, 116, 150, 300, 377, 677 };
const size_t N = sizeof( exit_gas ) / sizeof( *exit_gas );
size_t i;
int kilometre;
unsigned int first, second;
printf( "Enter your kilometre reading: " );
scanf( "%d", &kilometre );
for ( i = 0; i < N; i++ )
{
unsigned int distance = abs( kilometre - exit_gas[i] );
if ( i == 0 || distance < first )
{
if ( i != 0 ) second = first;
first = distance;
}
else if ( i == 1 || distance < second )
{
second = distance;
}
}
printf( "%u\n", first );
printf( "%u\n", second );
return 0;
}
我程序的输出是
1
78
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句