2017-05-07 81 views
-2

下面是我的代碼,用於從數組中找到最小值和最大值。任何人都可以解釋爲什麼我得到0作爲最小元素的輸出?它背後的原因是什麼?爲什麼我總是得到0作爲數組的最小值

我正在根據需要獲取數組元素中的最大值。

#include<stdio.h> 
#define N 3 

int a[N],min,max, max1,min1; 
void minmax(int m,int n); 

void minmax(int m, int n){ 
    if(m==n){ 
     max=min=a[m]; 
     return; 
    } 

    if(m == n-1){ 
     if(a[m]>a[n]){ 
      max= a[m]; 
      min = a[n]; 

     } 
     else{ 
      max= a[n]; 
      min = a[m]; 
     } 
    } 
    else{ 

     int mid = (m+n)/2; 

     minmax(1,mid); 
     max1=max; 
     min1=min; 
     minmax(mid+1,n); 
    } 

    if(max1>max){ 
     max= max1; 
    } 

    if(min1<min){ 
     min=min1; 
    } 


} 

int main(){ 

    int i,j,k; 
    printf("Enter array\n"); 
    for(i=1;i<=N;i++) //input 
     scanf("%d",&a[i]); 

    minmax(1,N); 

    printf("%d %d",max,min); 

} 
+3

'爲(I = 1;我<=N;i++)' -->'爲(I = 0; I BLUEPIXY

+0

請正確縮進您的代碼,這是不可能讀取的 –

+1

'a [3]'不存在;'a [0]'沒有設置。 – pmg

回答

0
  • 在你minmax功能,您從呼叫時m==n
  • 回報,但你知道爲m和n的值,當它到達了嗎?其中的 的值包括m=n=0

首先,您的for循環取自index=1 till N的數組。如果你這樣做,請確保你在minmax函數中也做了必要的修改。

所以,(剛纔看到註釋中也提到)的最簡單的解決方法是:

變化for(i=1;i<=N;i++)for(i=0;i<N;i++)

+0

它顯示錯誤的輸出 –

相關問題