实验一 Linux下C编程

一、实验目的

1、熟悉Linux常用命令;

2、掌握gcc编译器、gdb调试器的使用方法;

3、会编写多文件的C程序,并使用gcc编译;

4、熟悉makefile的结构和编制,利用make命令编译程序。

二、实验内容

1、编写包含多文件的.c源码,通过调用自定义函数,实现功能:用户输入一个数字,程序计算并输出介于1至此数之间所有个位数为1的素数;如果不存在,则打印-1;

2、直接使用gcc编译多个源文件并运行结果;

3、通过创建动态链接库lib***.so,使得 main 函数调用自定义函数时,可使用动态链接库,编译生成运行结果;

4、编写Makefile文件,使用make编译并运行。

三、源程序

prime.h(求素数的头文件):

#include <stdbool.h>

#include <math.h>

bool isPrime(int num);

prime.c(求素数的函数):

#include "prime.h"

// 判断是否是素数

bool isPrime(int num)

{

    const int sqrt_num = (int)(sqrt(num));

    for (int i = 2; i <= sqrt_num; i++) { 

        if (num % i == 0) { 

            return false; 

        }

    }  

    return true;

}

main.c(主程序):

#include <stdio.h>

#include "prime.h"

int main(int argc, char const *argv[])

{

    int num;

    printf("请输入一个数:\n");

    scanf("%d", &num);

    if(num <= 10)

    {

        // 前5个素数为2, 3, 5, 7, 11

        printf("-1\n");

    }

    else

    {

        // 前11个素数为2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31

        printf("11 ");

        // 个位数为1, 每次加10

        for (int i = 31; i <= num; i+=10)

        {

            if(isPrime(i))

            {

                printf("%d ", i);               

            }

        }

        printf("\n");

    }

    return 0;

}

makefile:

main.c.o:main.c 

    gcc -o main.c.o main.c ./libprime.so -lm

四、实验步骤、结果截图

(1)直接使用gcc编译多个源文件并运行结果。

(2)通过创建动态链接库libprime.so,使得 main 函数调用自定义函数时,可使用动态链接库,编译生成运行结果。

1. 生成动态链接库:

2. 编译生成运行结果:

(3)编写Makefile文件,使用make编译并运行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值