设置两个数值来表示最大数和第二大数,在循环比较赋值即可
//找给定数组中第二大的数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