내 코드의 목표는 배열의 숫자와 정수 사이에 가장 가까운 두 가지 차이를 얻는 것입니다. 다음은 내 코드입니다.
#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;
}
내 코드의 문제는 배열의 모든 숫자와 정수 (킬로미터) 사이의 차이를 찾는 것입니다. 예를 들어 킬로미터가 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] 삭제
몇 마디 만하겠습니다