![](/img/trans.png)
[英]In C, my program to output a number not inside a user input array or not sum of any numbers in the array is not printing anything
[英]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.