编写函数,输出一组数中的第二大的数
只输出第二数
#include<stdio.h>
const int MIN = -1;
int find_sec_max( int data[] , int count)
{
int maxnumber = data[0];
int sec_max = MIN;
int i;
for (i = 1 ; i < count ; i++)
{
if ( data[i] > maxnumber )
{
sec_max = maxnumber ;
maxnumber = data[i] ;
}
else if (data[i] < maxnumber)//此处排除等于的情况
{
if ( data[i] > sec_max )
sec_max = data[i];
}
}
return sec_max;
}
int main()
{
int a[] = {1, 2, 3, 4, 6, 5, 6, 5};
/*若上面不排除等于的情况,则当最大数重复两次以上时,次大数 求出有误*/
int n = sizeof(a) / sizeof(a[0]);
int num = find_sec_max(a, n);
printf("%d\n", num);
return 0;
}
扩展:编写一函数,输出max和sec_max
参考代码如下:
int[] arr = { 12, 49, 23, 32, 148, 48, };
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
int secondMax = arr[0];
for (int j = 0; j < arr.length; j++) {
if (arr[j] > secondMax && arr[j] < max) {
secondMax = arr[j];
}
}

浙公网安备 33010602011771号