我用函数编写代码,它给出了变量的地址,而不是解决方案的编码方式。
这是我的代码
#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;
}
答案 0 :(得分:1)
您需要在函数中为max
和min
提供起始值
一个不错的选择是max = INT_MIN;
和min = INT_MAX;
。此外,在您的包含中添加#include <limits.h>
,因为其中定义了INT_MAX
和INT_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;
}
编辑:您的代码也将max
和feld[i]
的作业相反。我已经在上面的函数中修复了它。
答案 1 :(得分:1)
您必须首先max
maxi()
min
和mini()
feld[0]
初始化数组中的某个值,例如0
。
不要使用limits.h
之类的立即值进行初始化,因为当数组中的所有值都大于或小于该值时,使用这样的值会导致麻烦。
包括INT_MIN
,max
使用INT_MAX
,min
使用maxi()
即可。
<强>更新强>
您正在尝试计算mini()
中的最小值和feld[i]<max
中的最大值。您必须反转feld[i]>min
和INT_MIN
的比较运算符的方向。
使用INT_MAX
和size <= 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;
}