用C语言编写一个函数找出一个整形数组中第二大的数
时间: 2024-09-12 08:17:27 浏览: 65
要用C语言编写一个函数找出整型数组中第二大的数,我们可以遍历数组一次,记录下最大的数和第二大的数。下面是一个示例函数的实现:
```c
#include <stdio.h>
// 函数声明
int findSecondLargest(int arr[], int n);
int main() {
int arr[] = {12, 35, 1, 10, 34, 1};
int n = sizeof(arr) / sizeof(arr[0]);
int secondLargest = findSecondLargest(arr, n);
printf("第二大的数是: %d\n", secondLargest);
return 0;
}
// 函数定义:找出数组中第二大的数
int findSecondLargest(int arr[], int n) {
if (n <= 1) {
return -1; // 如果数组元素不足两个,则返回-1表示无第二大的数
}
int largest = arr[0];
int secondLargest = arr[1];
// 如果第一个数不是唯一的数,需要调整secondLargest和largest
if (arr[0] < arr[1]) {
secondLargest = largest;
largest = arr[1];
}
// 遍历数组从第三个元素开始
for (int i = 2; i < n; i++) {
if (arr[i] > largest) {
secondLargest = largest; // 更新第二大的数
largest = arr[i]; // 更新最大的数
} else if (arr[i] > secondLargest && arr[i] != largest) {
secondLargest = arr[i]; // 更新第二大的数,但不与最大的数相等
}
}
return secondLargest;
}
```
这段代码首先定义了`findSecondLargest`函数,该函数接受一个整型数组和数组的长度作为参数。函数首先检查数组元素是否少于两个,如果是,则返回-1表示没有第二大的数。接着,函数初始化两个变量`largest`和`secondLargest`,分别用于跟踪最大的数和第二大的数。然后,函数遍历数组,根据遍历到的元素更新这两个变量。最后返回`secondLargest`作为结果。
阅读全文