day8 homework: 静态的生成和使用题目练习
This commit is contained in:
parent
e5a1ffa00b
commit
ee8b203991
|
@ -0,0 +1,24 @@
|
||||||
|
## 题目要求: 创建 a.h、a.c,、b.h、b.c 四个文件,在 a 文件中创建求阶乘函数并实现,在 b 文件中创建数组的排序函数并实现,要求将 a,b 编译成静态库文件。并编写 test.c 文件,引入 a 和 b 两个文件的功能并编译运行。
|
||||||
|
|
||||||
|
> 1. `libs` 中包含使用 `tempfiles` 文件夹中的源代码生成的静态库
|
||||||
|
> 2. `includes` 中包含 `test*.c` 需要用到的头文件
|
||||||
|
|
||||||
|
### 生成静态库
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 汇编源文件: a.s 生成目标文件 a.o
|
||||||
|
gcc -c a.c -o a.o
|
||||||
|
|
||||||
|
# 使用上一步生成的目标文件 a.o 生成静态库 liba.a
|
||||||
|
ar rc liba.a a.o
|
||||||
|
```
|
||||||
|
|
||||||
|
### 编译时指定头文件可以使用
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 编译时指定头文件和静态库的位置,生成可执行文件 testFactorial,-la 表示链接静态库 liba.a
|
||||||
|
gcc -static testFactorial.c -I ../includes -L ../libs -la -o testFactorial
|
||||||
|
|
||||||
|
# 编译时指定头文件和静态库的位置,生成可执行文件 testArrSort,-lb 表示链接静态库 libb.a
|
||||||
|
gcc -static testArrSort.c -L ./libs/ -lb -I ./includes/ -o testArrSort
|
||||||
|
```
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef __A_H__
|
||||||
|
#define __A_H__
|
||||||
|
|
||||||
|
int factorial(int); // 声明阶乘函数
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef __B_H__
|
||||||
|
#define __B_H__
|
||||||
|
|
||||||
|
int *arrSort(int arrInput[], int arrlen); // 声明数组排序函数
|
||||||
|
|
||||||
|
#endif
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,10 @@
|
||||||
|
#include "a.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int factorial(int n)
|
||||||
|
{
|
||||||
|
if (n == 0)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return n * factorial(n - 1);
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef __A_H__
|
||||||
|
#define __A_H__
|
||||||
|
|
||||||
|
int factorial(int); // 声明阶乘函数
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "b.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int *arrSort(int arrInput[], int arrlen)
|
||||||
|
{
|
||||||
|
int i, j, temp;
|
||||||
|
for (i = 0; i < arrlen - 1; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < arrlen - 1 - i; j++)
|
||||||
|
{
|
||||||
|
if (arrInput[j] > arrInput[j + 1])
|
||||||
|
{
|
||||||
|
temp = arrInput[j];
|
||||||
|
arrInput[j] = arrInput[j + 1];
|
||||||
|
arrInput[j + 1] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arrInput;
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef __B_H__
|
||||||
|
#define __B_H__
|
||||||
|
|
||||||
|
int *arrSort(int arrInput[], int arrlen); // 声明数组排序函数
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,24 @@
|
||||||
|
#include "b.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int N; // 定义数组长度
|
||||||
|
printf("Please input the length of the array: ");
|
||||||
|
scanf("%d", &N);
|
||||||
|
int arrInput[N]; // 未初始化的数组
|
||||||
|
printf("Please input %d numbers: ", N);
|
||||||
|
int i = 0;
|
||||||
|
while (i < N)
|
||||||
|
{
|
||||||
|
scanf("%d", &arrInput[i++]);
|
||||||
|
}
|
||||||
|
|
||||||
|
int *arrOutput = arrSort(arrInput, N);
|
||||||
|
for (int i = 0; i < N; i++)
|
||||||
|
{
|
||||||
|
printf("%d ", arrOutput[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
#include "./includes/a.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
printf("Please input a number: ");
|
||||||
|
scanf("%d", &n);
|
||||||
|
printf("%d! = %d\n", n, factorial(n));
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue