Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么数组的最小值总是为0_C_Minimum_Minmax - Fatal编程技术网

C 为什么数组的最小值总是为0

C 为什么数组的最小值总是为0,c,minimum,minmax,C,Minimum,Minmax,下面是我从数组中查找最小值和最大值的代码。有人能解释为什么我得到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; }

下面是我从数组中查找最小值和最大值的代码。有人能解释为什么我得到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);

}
#包括
#定义n3
int a[N],min,max,max1,min1;
void minmax(int m,int n);
无效最小最大值(整数m,整数n){
如果(m==n){
最大值=最小值=a[m];
返回;
}
如果(m==n-1){
如果(a[m]>a[n]){
最大值=a[m];
min=a[n];
}
否则{
max=a[n];
最小值=a[m];
}
}
否则{
int mid=(m+n)/2;
最小最大值(1,中);
max1=最大值;
min1=min;
最小最大值(中+1,n);
}
如果(最大值1>最大值){
max=max1;
}
如果(最小1
  • minmax
    函数中,当
    m==n
  • 但是你知道m和n的值吗,当它达到这个值的时候 这些值包括
    m=n=0
首先,您的
for
循环从
index=1到N取一个数组。如果这样做,请确保在
minmax
函数中也进行了必要的更改

因此,最简单的修复方法(刚才在评论中也提到)是:


更改
for(i=1;i
for(i=1;i
for(i=0;i请正确缩进您的代码,这是不可能读取的。
a[3]
不存在;
a[0]
尚未设置。您的递归方法已被破坏;
min
max
是全局变量,但您使用它们就像使用本地变量一样。。。