C 为什么数组的最小值总是为0
下面是我从数组中查找最小值和最大值的代码。有人能解释为什么我得到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; }
#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;ifor(i=1;ifor(i=0;i请正确缩进您的代码,这是不可能读取的。a[3]
不存在;a[0]
尚未设置。您的递归方法已被破坏;min
和max
是全局变量,但您使用它们就像使用本地变量一样。。。