設置兩個數值來表示最大數和第二大數,在循環比較賦值即可
//找給定數組中第二大的數 int get_smax(int *arr,int length) { int max; int smax; if(arr[0] > arr[1]) { max = arr[0]; smax = arr[1]; } else { max = arr[1]; smax = arr[0]; } for(int i = 2; i < length; i++) { if(max < arr[i]) { smax = max; max = arr[i]; } else if((max > arr[i]) && (arr[i] > smax)) { smax = arr[i]; } } return smax; }
測試代碼:
int main() { int arr[5] = {1,2,3,4,5}; int smax = get_smax(arr,5); printf("smax = %d\n",smax); return 0; }
運行結果:
smax = 4