Hello stackOverflowers!有人可以解释为什么当我从1到10对阵列充电时,输出表示最小值为1,最大值为偶数为10,当我从10开始将数组输出为1时,输出为最小值为2,最大值为10我认为嵌套的if序列是正确的,因为计数器显示正确的偶数和正确的奇数,但我想到了某些东西...... 程序应该在数组内输出最小值和最大偶数。
感谢您的回答!
/*EVEN MAX AND MIN POINTER FUNCTION*/
#include <stdio.h>
#define MAXARRAY 100
typedef int ArrayTable[MAXARRAY];
void chargeArray(ArrayTable,int);
void maxMinEven(const ArrayTable, int, int *, int *,int *,int *);
int main(){
ArrayTable intTable;
int maxim,minim;
int contEven=0,contOdd=0;
int n=10;
printf("Input %d integer number:\n",n);
chargeArray(intTable,n);
maxMinEven(intTable,n,&minim,&maxim,&contEven,&contOdd);
printf("The minimun even of the %d number is %d and the maximun %d. Even %d Odd %d\n",n,minim,maxim,contEven,contOdd);
system("pause");
return 0;
}
void chargeArray(ArrayTable t,int n){
int i=0;
int number;
for(i=0;i<n;i++){
scanf("%d",&number);
t[i]=number;
}
}
void maxMinEven(const ArrayTable t, int n, int *min, int *max,int *contEven,int *contOdd){
int i;
*min=t[0];
*max=t[0];
for(i=0;i<n;i++){
if(t[i]%2==0){
(*contEven)++;/*incremento el contenido de la direccion de memoria de contPar*/
if(t[i]>*max)
*max=t[i];
if(t[i]<*min)
*min=t[i];
}else{
(*contOdd)++;/*incremento el contenido de la direccion de memoria de contImp*/
}
}
}
答案 0 :(得分:1)
您将min设置为等于数组的第一个元素,无论它是否为偶数。
*min=t[0];
在循环内部,您将值与此最小值进行比较。 得到这个结果,因为1小于数组中的任何其他偶数。
希望我帮忙,
答案 1 :(得分:0)
这两行:
*min=t[0];
*max=t[0];
您的代码假定t[0]
是偶数。但是,这不一定是真的。
一个解决方案是:
*min = INT_MIN;
*max = INT_MAX;