编写函数,输出一组数中的第二大的数

只输出第二数

#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];
}
}


 

posted @ 2018-12-19 20:38  Joye507  阅读(266)  评论(0)    收藏  举报