C语言有一个数组int a[N]已初始化,请求出该数组中的第二大元素的值
时间: 2024-10-24 22:08:43 浏览: 12
(完整word版)C语言数组与函数阶段测试题答案-.doc
在C语言中,如果想要找到一个未排序整型数组`a[N]`中的第二大元素,由于数组没有特定的排序,你需要遍历整个数组。这里是一种简单的算法:
1. 初始化两个变量 `max1` 和 `max2` 为数组的第一个元素,假设第一个元素是最小的,第二个元素也是最小的。
2. 遍历数组从索引1开始(因为我们已经将第一个元素设为较小的),对于每个元素:
- 如果当前元素大于 `max1`,则更新 `max1` 为当前元素。
- 否则,如果当前元素大于 `max2` 但小于 `max1`,则更新 `max2` 为当前元素。
3. 遍历结束后,`max2` 就存储了数组中的第二大元素。
```c
#include <stdio.h>
int findSecondLargest(int a[], int n) {
if (n < 2) { // 数组长度小于2,直接返回最大值
return *a;
}
int max1 = a[0], max2 = a[0];
for (int i = 1; i < n; i++) {
if (a[i] > max1) {
max2 = max1;
max1 = a[i];
} else if (a[i] > max2 && a[i] != max1) {
max2 = a[i];
}
}
return max2;
}
// 示例数组
int main() {
int a[] = {5, 3, 9, 1, 7};
int n = sizeof(a) / sizeof(a[0]);
int second_largest = findSecondLargest(a, n);
printf("数组中的第二大元素是:%d\n", second_largest);
return 0;
}
```
运行上面的程序,你会得到数组中的第二大元素。
阅读全文