设置两个数值来表示最大数和第二大数,在循环比较赋值即可
//找给定数组中第二大的数 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 ",smax); return 0; }
运行结果:
smax = 4