linux中编写两个函数,其中一个求数组中的最大值与最小值,另一函数求某2一个数的个数, 建立一个库,对程序进行调试;
时间: 2024-03-24 18:35:49 浏览: 71
linux 编程
好的,以下是两个函数的实现:
```c
#include <stdio.h>
int get_max_min(int arr[], int len, int* max, int* min) {
if (arr == NULL || 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_num_count(int arr[], int len, int num) {
if (arr == NULL || len <= 0) {
return -1; // 非法输入
}
int count = 0;
for (int i = 0; i < len; ++i) {
if (arr[i] == num) {
++count;
}
}
return count; // 返回num的个数
}
```
接下来是建立库并进行调试的步骤:
1. 将上面的代码保存为一个名为 `mylib.c` 的文件。
2. 在终端中输入以下命令进行编译生成静态库:
```bash
gcc -c mylib.c -o mylib.o
ar rcs libmylib.a mylib.o
```
这里 `libmylib.a` 是生成的静态库文件名。
3. 创建一个测试程序,比如 `test.c`,并在其中调用上面的两个函数:
```c
#include <stdio.h>
#include "mylib.h"
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int len = sizeof(arr) / sizeof(arr[0]);
int max, min;
if (get_max_min(arr, len, &max, &min) == 0) {
printf("Max: %d, Min: %d\n", max, min);
}
int num = 5;
int count = get_num_count(arr, len, num);
printf("Num %d occurs %d times\n", num, count);
return 0;
}
```
4. 创建一个名为 `mylib.h` 的头文件,并在其中声明上面两个函数:
```c
#ifndef _MYLIB_H_
#define _MYLIB_H_
int get_max_min(int arr[], int len, int* max, int* min);
int get_num_count(int arr[], int len, int num);
#endif
```
5. 在终端中输入以下命令进行编译链接生成可执行文件:
```bash
gcc test.c -L. -lmylib -o test
```
这里 `test` 是生成的可执行文件名。
6. 运行测试程序:
```bash
./test
```
如果一切正常,应该会输出以下内容:
```
Max: 10, Min: 1
Num 5 occurs 1 times
```
恭喜,你已经成功建立了一个库并进行了调试!
阅读全文