C语言实现数组中找到第二大的数。
构思:两两比较,第二个跟第一个比较,记录下大的,再把小的数赋给定义的第二大,但是这样会出先一个问题,就是如果第三个数比第二个数小但是比第一个数大,这样比较仍然记录的第二大数仍然是第一个数,所以要再来一个if用来判断第一个数跟第三个数的大小。代码入下:
#include <stdio.h>
/*函数功能:找到数组中第二大的数
传参:数组元素, 数组长度
返回值:第二大数*/
int getsecond(int arry[], int l)
{
int max1 = arry[0]; //定义最大数
int max2 = 0; //定义第二大数
int i;
for(i = 1; i < l; i++)
if(arry[i] > max1)
{
max2 = max1;
max1 = arry[i];
}
else if(max2 <= arry[i])
{
max2 = arry[i];
}
return max2;
}
int main()
{
int ret;
int a[] = {0, 1, 2, 3, 4, 6, 50, 100, 80, 200};
int length = sizeof(a) / sizeof(a[0]);
ret = getsecond(a, length);
printf("%d\n", ret);
return 0;
}