linux中编写两个函数,其中一个求数组中的最大值与最小值,另一函数求一个数组的个数, 建立一个库,对程序进行调试;
时间: 2024-03-24 21:36:11 浏览: 109
以下是两个函数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int find_max_min(int arr[], int len, int* max, int* min) {
if (len == 0) {
return -1;
}
*max = *min = arr[0];
for (int i = 1; i < len; i++) {
if (arr[i] > *max) {
*max = arr[i];
}
if (arr[i] < *min) {
*min = arr[i];
}
}
return 0;
}
int get_array_size(int arr[]) {
return sizeof(arr) / sizeof(arr[0]);
}
```
在这里,第一个函数 `find_max_min` 接收一个整型数组,数组长度,以及两个指针,用于返回最大值和最小值。该函数会在数组中查找最大值和最小值,并将结果存储到指针所指向的变量中,最后返回 0 表示执行成功。
第二个函数 `get_array_size` 只接收一个整型数组,返回数组的长度。
可以使用以下命令将这两个函数编译成库文件:
```bash
gcc -shared -o libarray_utils.so array_utils.c
```
这里使用了 `-shared` 参数来生成共享库文件,`-o` 参数指定输出文件名为 `libarray_utils.so`,`array_utils.c` 则是包含两个函数实现的源文件名。
在编译完成后,可以在其他程序中使用该库。以下是一个示例程序,用于测试这两个函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include "array_utils.h"
#define ARRAY_SIZE 5
int main() {
int arr[ARRAY_SIZE] = {1, 2, 3, 4, 5};
int max, min;
int ret = find_max_min(arr, ARRAY_SIZE, &max, &min);
if (ret != 0) {
printf("Failed to find max and min value!\n");
return -1;
}
printf("Max value: %d\n", max);
printf("Min value: %d\n", min);
int size = get_array_size(arr);
printf("Array size: %d\n", size);
return 0;
}
```
在这个程序中,我们首先包含了 `array_utils.h` 头文件来引入两个函数的声明。然后我们定义了一个整型数组,调用 `find_max_min` 函数来查找数组中的最大值和最小值,并输出结果。最后我们调用 `get_array_size` 函数,输出数组的长度。
可以使用以下命令编译该程序:
```bash
gcc -o test test.c -L. -larray_utils
```
这里使用 `-L` 参数指定了共享库文件所在的目录,`-l` 参数指定了库文件名,`test.c` 则是包含测试程序的源文件名。编译完成后,可以使用以下命令运行测试程序:
```bash
./test
```
程序会输出以下结果:
```
Max value: 5
Min value: 1
Array size: 5
```
这说明我们编写的两个函数都能正常工作,库文件也能被正确链接和使用。
阅读全文