2017-05-07 52 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

它显示错误的输出 –

相关问题