熟悉C语言函数结果的带出方式,并求一组整型数据中的最大值和最小值,分别用结构体指针作函数参数和以结构体变量作函数返回值的方法带出结果。请将fun1和fun2编写完整。
时间: 2024-09-10 16:19:52 浏览: 58
在C语言中,函数可以有多种方式返回结果,特别是涉及到复杂的数据结构如结构体时。这里有两种方法:
1. 使用结构体指针作为函数参数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体
struct IntPair {
int max;
int min;
};
// 函数原型声明
void findMinMax(int arr[], int n, struct IntPair* result);
int main() {
int data[] = {5, 8, 1, 9, 3};
int n = sizeof(data) / sizeof(data[0]);
// 初始化结构体指针
struct IntPair pair;
pair.max = INT_MIN; // 设置初始最小值为负无穷
pair.min = INT_MAX; // 设置初始最大值为正无穷
// 调用函数并传入结构体指针
findMinMax(data, n, &pair);
printf("Max value is %d and Min value is %d\n", pair.max, pair.min);
return 0;
}
// 结构体指针接收结果的函数
void findMinMax(int arr[], int n, struct IntPair* result) {
int temp_max = arr[0], temp_min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > temp_max)
temp_max = arr[i];
else if (arr[i] < temp_min)
temp_min = arr[i];
}
// 更新结构体指针内的值
result->max = temp_max;
result->min = temp_min;
}
```
2. 使用结构体变量作为函数返回值:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体
struct IntPair {
int max;
int min;
};
// 函数原型声明
struct IntPair getMinMax(int arr[], int n);
int main() {
int data[] = {5, 8, 1, 9, 3};
int n = sizeof(data) / sizeof(data[0]);
// 调用函数获取结果
struct IntPair pair = getMinMax(data, n);
printf("Max value is %d and Min value is %d\n", pair.max, pair.min);
return 0;
}
// 返回结构体的函数
struct IntPair getMinMax(int arr[], int n) {
int temp_max = arr[0], temp_min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > temp_max)
temp_max = arr[i];
else if (arr[i] < temp_min)
temp_min = arr[i];
}
// 创建并初始化结构体返回值
struct IntPair result;
result.max = temp_max;
result.min = temp_min;
return result;
}
```
在这两个示例中,`findMinMax` 和 `getMinMax` 函数都用于找到数组中的最大值和最小值,然后通过指定的方式(指针或返回值)传递结果。
阅读全文