解题思路:
1.求数组要在函数中传入数组及数组大小
2.定义两个变量来存储最大及第二大的值
3.通过for循环进行比较
#include <stdio.h>
int func(int buf[], int size)
{
if (size < 2)
{
return -1; // 少于两个元素则没有第二大的数
}
int max = buf[0]; // 假设第一个元素是最大的
int sec = buf[0]; // 假设第二个元素是最大的
for (int i = 0; i < size; i++)
{
if (buf[i] > max) // 如果当前元素大于最大的,则更新第二大值,把当前元素的值赋给最大的
{
sec = max;
max = buf[i];
}
else if (buf[i] > sec && buf[i] < max) // 如果当前元素大于第二大且小于最大的,则把当前元素赋值给第二大的
{
sec = buf[i];
}
}
return sec;
}
int main()
{
int buf[5] = {44, 22, 665, 779, 441};
int size = sizeof(buf) / sizeof(buf[0]);
printf("The second largest elemet is %d\n", func(buf, size));
return 0;
}