下面是我从数组中查找最小值和最大值的代码。任何人都可以解释为什么我得到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);
}
答案 0 :(得分:0)
minmax
功能中,您会在m==n
m=n=0
。首先,您的for
循环从index=1 till N
获取一个数组。如果您这样做,请确保在minmax
功能中进行必要的更改。
所以,最简单的解决方法(仅在评论中提到)也是:
将for(i=1;i<=N;i++)
更改为for(i=0;i<N;i++)