你好,这个程序用于计算数组中的最小值和最大值

时间:2015-11-15 23:27:16

标签: c arrays function max min

我用函数编写代码,它给出了变量的地址,而不是解决方案的编码方式。

this is the output

这是我的代码

#include <stdio.h>

int maxi(int feld[],int size);
int mini(int feld[],int size);

int main(void){
    int feld[]={33,36,31,38,45,42,11,29,56,54};
    int len;
    int min,max;

    len=sizeof(feld)/sizeof(int);
    printf("Lange des Datenfeldes=%i\n",len);
    max=maxi(feld,len);
    min=mini(feld,len);
    printf("Minimum = %i\tMaximum = %i\n",min,max);
    return 0;
}

int maxi(int feld[],int len){
    int i,max;

    for(i=0;i<len;i++){
        if(feld[i]<max){
                feld[i]=max;
        }
    }
    return max;
}

int mini(int feld[],int len){
    int i,min;

    for(i=0;i<len;i++){
        if(feld[i]>min){
            feld[i]=min;
        }
    }
    return min;
}

3 个答案:

答案 0 :(得分:1)

您需要在函数中为maxmin提供起始值 一个不错的选择是max = INT_MIN;min = INT_MAX;。此外,在您的包含中添加#include <limits.h>,因为其中定义了INT_MAXINT_MIN

int maxi(int feld[],int len){
    int i;
    int max = INT_MIN;
    for(i=0;i<len;i++){
        if(feld[i]<max){
            max=feld[i];
        }
    }
    return max;
}

编辑:您的代码也将maxfeld[i]的作业相反。我已经在上面的函数中修复了它。

答案 1 :(得分:1)

您必须首先max maxi() minmini() feld[0]初始化数组中的某个值,例如0

不要使用limits.h之类的立即值进行初始化,因为当数组中的所有值都大于或小于该值时,使用这样的值会导致麻烦。

包括INT_MINmax使用INT_MAXmin使用maxi()即可。

<强>更新

您正在尝试计算mini()中的最小值和feld[i]<max中的最大值。您必须反转feld[i]>minINT_MIN的比较运算符的方向。

使用INT_MAXsize <= 0很有用,因为在feld[i]=max;时它也会有所帮助。

更新2:

feld[i]=min;max=feld[i];也是错误的。它们应为min=feld[i];null

答案 2 :(得分:0)

代码倒退。 int maxi(int feld[],int len){... if(feld[i]<max){应为if(feld[i] > max){

分配也是错误的顺序。

初始化max@munircontractor @MikeCAT

mini()类似的问题。

int maxi(int feld[], int len){
  // int max;
  int max = INT_MIN;
  int i;
  for(i=0;i<len;i++){
    // if(feld[i]<max){
    if(feld[i] > max){
      // feld[i] = max;
      max = feld[i];
    }
  }
  return max;
}