C语言:写一个函数找出一个整数数组中,第二大的数 int find sec max(int datall int count)
时间: 2023-12-21 21:03:09 浏览: 34
好的,以下是C语言的代码实现:
```c
int find_sec_max(int data[], int count) {
int max = INT_MIN, sec_max = INT_MIN; // 初始化最大值和次大值为最小值
for (int i = 0; i < count; i++) {
if (data[i] > max) {
sec_max = max; // 如果当前数比最大值还大,那么次大值就变成了原先的最大值
max = data[i];
} else if (data[i] > sec_max && data[i] < max) { // 如果当前数比次大值大,但比最大值小
sec_max = data[i];
}
}
return sec_max;
}
```
这个函数的原理是,用两个变量 `max` 和 `sec_max` 分别记录最大值和次大值,遍历整个数组,如果当前数比最大值还大,那么次大值就变成了原先的最大值,最大值就变成了当前数;如果当前数比次大值大,但比最大值小,那么次大值就变成了当前数。最后函数返回的就是次大值。
注意:这个函数假设数组中至少有两个不同的数。如果数组中有多个相同的最大值,那么次大值就是最大值本身。如果数组中只有一个数,那么返回值没有意义。
相关问题
c语言:已知一个整数数组,通过函数调用的方式,获取第n个数组元素的地址并输出
可以定义一个函数,传入整数数组和要获取的元素下标n,返回该元素的地址。
代码如下:
```c
#include <stdio.h>
int *getElement(int arr[], int n) {
return &arr[n]; // 返回第n个元素的地址
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = 3;
int *p = getElement(arr, n); // 获取第n个元素的地址
printf("第%d个元素的地址为%p,值为%d\n", n, p, *p); // 输出地址和值
return 0;
}
```
输出结果为:
```
第3个元素的地址为0x7ffeeae8f9cc,值为4
```
c语言:输入5个整数,找出其中最大得数,用函数的嵌套用来处理
以下是使用函数嵌套的C语言程序,输入5个整数并找出其中最大的数:
```c
#include <stdio.h>
int find_max(int arr[], int n); // 声明函数
int main() {
int arr[5];
int i;
printf("请输入5个整数:\n");
for (i = 0; i < 5; i++) {
scanf("%d", &arr[i]);
}
printf("最大的数是:%d\n", find_max(arr, 5)); // 调用函数
return 0;
}
int find_max(int arr[], int n) {
int max = arr[0];
int i;
for (i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
```
在主函数中,首先声明了一个大小为5的整数数组`arr`,并使用循环将用户输入的5个整数存入数组中。
然后调用`find_max`函数,并将数组`arr`和数组长度`5`作为参数传入。
在`find_max`函数中,首先声明一个变量`max`,并将数组中第一个元素作为初始值。然后使用循环遍历数组中的元素,如果当前元素大于`max`,则将其赋值给`max`。最终返回`max`。
由于`find_max`函数的返回值为整数类型,因此在主函数中可以直接将其输出。