簡體   English   中英

我從用戶輸入中查找最接近的數字對的 C 程序沒有打印正確的輸出?

[英]My C program to find closest pair of numbers from user input is not printing the right output?

我試圖找到用戶輸入的最接近的一對數字。 我的 C 代碼工作不正常,我無法弄清楚出了什么問題。 我認為這可能與存儲值有關,但我不知道從哪里開始。

#include <stdio.h>
#include <math.h>

int main()
{
    int i, j,arr[50], first,second;

    //loop input
    for(i=0;i<50;i++) //loop 50 times
    {
        scanf("%d", &i); //scan
        //break if i=-1      
        if (i==-1)
            break;
        //if not print    
    }
    //2nd num - 1st num < 3rd num-1st num, closest = 1st and 2nd num
    //i[0]=num1, j[0+i]=2nd num, i= 4 , 5, 7, ans=arr,
    //if j[0+i]-i[0]= ans < j[0+i]-i[i]=ans 
    //arr[i]=8,2,17,4,25
    for(i=0;i<50;i++)
    {
        for(j=i+1;j<50;j++)
        {
            if(arr[j]-arr[i]<arr[j+1]-arr[i])
            {
                first = arr[i];//3
                second = arr[j+1];//5
            }
        }   
    }
    printf("%d %d\n", first, second);

 return 0;

}

問題在於這段代碼。 您正在掃描計數器變量i而不是數組。 然后你使用數組arr操作東西。 為什么這在任何情況下都有效?

 for(i=0;i<50;i++) //loop 50 times
        {
            scanf("%d", &i); //scan
            //break if i=-1      
            if (i==-1)
                break;
            //if not print    
        }

除非這是一個奇跡,否則i永遠不會是-1

不要將其發布為答案,而是更喜歡編輯您的代碼。 無論如何,問題就在這里:

for (j = i + 1; j < len; j++)//j<i <-why is it wrong?

怎么沒有錯? 您已使用值i+1初始化j 它怎么會永遠小於i 因此,它從數組外部獲取值並為您提供意想不到的結果。

正確的形式是:

for (j = 0; j < i; j++)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM