写一个函数找出一个整数数组中第二大的数

写一个函数找出一个整数数组中第二大的数!!

#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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-11
有那么复杂??

int[] nums = { 1, 2, 10, 12, 5, 12,3,101,11,-1,12 };
int max = nums[0];
int secmax = -1;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] > max)
{
secmax = max;
max = nums[i];
}

}
Console.WriteLine("最大的数是:"+max);
Console.WriteLine("第二大的数是:"+secmax);
第2个回答  2012-03-27
const int MINNUMBER = -32767 ;
int find_sec_max( int data[] , int count)
{
int maxnumber = data[0] ;
int sec_max = MINNUMBER ;
for ( int i = 1 ; i < count ; i++)
{
if ( data[i] > maxnumber )
{
sec_max = maxnumber ;
maxnumber = data[i] ;
}
else
{
if ( data[i] > sec_max )
sec_max = data[i] ;
}
}
return sec_max ;
}