一、函数代码
基本思想:用选择排序第一遍排序,先找出最大值,然后之前的数就是第二大的数,但是有一个特殊情况要注意:后面出现的数字比max小,但是比_max大
int func(int* arr,int len)
{
//max是最大的数,_max是第二大的数
int max = arr[0],_max = 0;
for(int i=1;i<len;i++)
{
if(arr[i] > max)
{
_max = max;
max = arr[i];
}
else if(arr[i] > _max) //这个条件是来判断后面出现的数会不会比max小但是比_max大
{
_max = arr[i];
}
}
return _max;
}
二、测试程序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int func(int* arr,int len)
{
int max = arr[0],_max = 0;
for(int i=1;i<len;i++)
{
if(arr[i] > max)
{
_max = max;
max = arr[i];
}
else if(arr[i] > _max)
{
_max = arr[i];
}
}
return _max;
}
int main()
{
srand(time(NULL));
int arr[10] = {};
for(int i=0;i<10;i++)
{
arr[i] = rand()%100;//把随机数放入数组中
printf("%d\n",arr[i]);
}
printf("_max:%d\n",func(arr,10));
return 0;
}
三、运行结果
87
22
20
57
54
6
86
77
69
31
_max:86