我是C的初学者,我正在尝试使用键盘输入创建一个计算数组最大值的程序。我不明白为什么这段代码打印4203785
。我认为算法是正确的。有人能帮助我吗?
int calcola_massimo(int vettore[], int size) {
int max = vettore[0];
int i;
for(i = 0; i < size; i++ ){
if(vettore[i] > max){
max = vettore[i];
}
}
return max;
}
int main(int argc, char *argv[]) {
int array[10];
int j;
int max;
for(j = 0; j< SIZE; j++){
printf("Inserire valore n. %d \n", j+1);
scanf("%d", array);
}
max = calcola_massimo(array, SIZE);
printf("Il valore massimo e' : %d", max);
return 0;
}
答案 0 :(得分:2)
对于初学者来说,最好将数组声明为
int array[SIZE];
至于循环,你必须写
scanf("%d", array + j );
或
scanf("%d", &array[j] );
否则,您始终输入array[0]
。数组的所有其他元素都没有初始化。
最好按以下方式定义函数本身
int * calcola_massimo( const int vettore[], size_t size )
{
const int *max = vettore;
size_t i;
for ( i = 1; i < size; i++ )
{
if ( *max < vettore[i] ) max = vettore + i;
}
return ( int * )max;
}
因为没有什么可以阻止用户传递大小等于0.在这种情况下,原始函数将具有未定义的行为。