-1
我有一個問題,當我運行它時,最小值和最大值不會正確顯示。 有什麼建議嗎? 我必須讓範圍出現。 我試過用指針。 練習可以做其他的肯定,但我想用這種方式瞭解我的錯誤。C中數組中的最大最小值(帶指針)
#include <stdio.h>
#include "simpio.h"
#include "genlib.h"
int readArray(int array[100]);
main()
{
int array[100], i, size, *min, *max;
printf("Enter the elements of the array, one per line.\n");
printf("Use -1 to signal the end of the list.\n");
readArray(array);
min = array;
*min = *array;
for (i=1; i<size; i++)
{
if (*(array+i) < *min)
{
*min = *(array+i);
}
}
max = array;
*max = *array;
for (i=1; i<size; i++)
{
if (*(array+i) > *max)
{
*max = *(array+i);
}
}
printf("The range of values is %d-%d \n", *min, *max);
system("pause");
}
int readArray(int array[100])
{
int i, size;
size = 0;
for (i=0; i<100; i++)
{
printf("? ");
array[i] = GetInteger();
size += 1;
if (array[i] == -1) {break;}
}
for(i=0; i<size-1; i++)
{
printf("%d ", array[i]);
}
printf("\n");
printf("\n");
}
注意一個例子'*(數組+ I)'是一樣的,並且應當被寫成,'陣列[I]'。當你設置'min = array'時,你使用'array [0]'來存儲最小值。然後當你設置'max = array'時,你使用'array [0]'作爲最大值。這就是爲什麼代碼不起作用。 – user3386109
您也可以對最小值和最大值都使用相同的循環。 –
請不要寫'if(array [i] == -1){break;}'這樣的代碼...... –