gpt4 book ai didi

c - 为什么我总是得到 0 作为数组的最小值

转载 作者:行者123 更新时间:2023-11-30 20:33:52 24 4
gpt4 key购买 nike

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

}

最佳答案

  • 在您的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++)

关于c - 为什么我总是得到 0 作为数组的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43832410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com