1) 制作info.c,main.c,score.c,show.c源代码文件以及相应的头文件。 2) main.c文件中仅有main函数,main函数仅调用show函数实现个人信息以及上学期各门课程平均分打印输出。 3) show.c文件中仅有show函数实现。 4) info.c文件中仅有info函数,调用printf打印输出学号,调用puts打印输出姓名,班级。 5) score.c文件中仅有score函数,计算学生本人上学期各门课程的平均分。 6) 制作info.o,score.o,show.o文件,分别制作静态库libinformation.a以及动态库libinformation.so 7) 分别使用静态库以及动态库编译运行main.c
时间: 2023-06-24 20:09:00 浏览: 71
以下是info.c的代码:
```c
#include <stdio.h>
#include "information.h"
void info() {
printf("学号: 123456\n");
puts("姓名: 张三");
puts("班级: 计算机科学与技术1班");
}
```
以下是score.c的代码:
```c
#include "information.h"
double score(double scores[]) {
double sum = 0;
for (int i = 0; i < 5; i++) {
sum += scores[i];
}
return sum / 5;
}
```
以下是show.c的代码:
```c
#include <stdio.h>
#include "information.h"
void show() {
info();
double scores[5] = {89, 92, 78, 85, 90}; // 假设上学期5门课程的成绩分别为89、92、78、85、90
double avg_score = score(scores);
printf("上学期各门课程平均分: %.2f\n", avg_score);
}
```
以下是information.h的代码:
```c
#ifndef INFORMATION_H
#define INFORMATION_H
void info();
double score(double scores[]);
void show();
#endif
```
以下是main.c的代码:
```c
#include "information.h"
int main() {
show();
return 0;
}
```
接下来可以使用以下命令编译生成静态库和动态库:
```
gcc -c info.c score.c show.c
ar rcs libinformation.a info.o score.o show.o
gcc -shared -o libinformation.so info.o score.o show.o
```
最后,可以使用以下命令编译生成可执行文件并运行:
```
gcc main.c -L. -linformation -o main_static
gcc main.c -L. -linformation -o main_dynamic -Wl,-rpath,. -linformation
./main_static
./main_dynamic
```
阅读全文