Linux程序开发(一):Linux基础入门安装和实操手册

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊!

喜欢我的博客的话,记得点个红心❤️和小关小注哦!您的支持是我创作的动力!数据源存放在我的资源下载区啦!

Linux程序开发(一):Linux基础入门安装和实操手册

第一次作业

问答题:

1、Linux与Unix的关系?

Linux与Unix有很紧密的关系。
(1)Linux最初是由Linus Torvalds在1991年编写的:它的核心遵循了Unix的设计思路,并参考了一些Unix的代码。因此,Linux与Unix有着相似的命令行界面、文件系统结构和进程管理方式。

(2)另外,Linux还内置了许多来自Unix的工具和服务:但是,Linux并不是完全兼容Unix的,在一些细节上还存在差异。另外值得注意的是,Unix是一个商业操作系统,而Linux则是一个开源免费的操作系统。

2、Linux内核版本和发行版本的差别?

Linux内核版本和发行版之间是有一些差异的。

(1)Linux内核是操作系统的核心部分:它控制着硬件和软件之间的交互。Linux内核版本号通常由三个数字构成,例如:5.14.6。每个数字表示一个层次结构:大版本、次要版本和修订版本。新版本的内核通常包含了新的功能和性能优化,并且也会修复已知的安全漏洞和bug。

(2)Linux发行版则是基于Linux内核的完整操作系统:并包括一个桌面界面、应用程序、工具等。常见的Linux发行版包括Ubuntu、Debian、Red Hat Enterprise Linux、CentOS、Fedora等。不同发行版之间会有不同的软件包管理系统、默认桌面环境、配置文件位置等等。发行版会对Linux内核进行定制和打包以便于用户使用。

(3)简单来说,Linux内核是操作系统的核心:控制着硬件和软件之间的交互。而发行版则是基于Linux内核的完整操作系统,包含了桌面界面和各种应用程序。

3、解释GPL、POSIX、LBS。

GPL(General Public License):通用公共许可证是一种开源软件许可证,它保障了用户对软件的自由使用、修改和分发。GPL要求在使用或修改基于GPL许可的软件时,必须将修改后的代码也以GPL许可证的形式进行发布。这意味着GPL许可证确保了开源软件在整个生命周期中的开放性和自由性,鼓励开发者共享和合作。

POSIX(Portable Operating System Interface for Unix):可移植操作系统接口标准是为了使Unix和类Unix操作系统之间具有可移植性而制定的一套标准。POSIX定义了一系列的API(应用程序接口)和命令行工具规范,旨在提供一致的系统调用接口、文件系统结构、下层硬件接口等,使得符合POSIX标准的应用程序可以在不同的POSIX兼容操作系统上运行。

LBS(Location-Based Service):基于位置的服务是指利用移动通信技术和位置信息来提供与用户位置相关的各种应用和服务。通过LBS,用户可以获取周边商家信息、导航路线、地图定位、社交媒体签到等功能。LBS技术通常依赖于全球定位系统(GPS)或移动基站信号定位,结合地图数据和其他相关信息实现服务的提供。LBS在移动互联网时代得到了广泛的应用,为用户提供了更便捷和个性化的服务体验。

实验题:

4、安装自己的Linux运行环境,该任务在自己的机器上完成,架设完毕后写出主要安装步骤并截图。

提示:有三种方式架设Linux运行环境

  • 第一种方式,独立安装:在计算机硬件上独立安装Linux发行版本。
  • 第二种方式,虚拟机安装:在Windows操作系统或者Mac操作系统中安装虚拟机软件,虚拟机上再安装Linux操作系统。
  • 第三种方式,软件仿真:在Windows系统中安装cygwin的类Unix运行环境。
(1)下载VMWARE,安装centos7

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)关联centOS镜像

在这里插入图片描述

在这里插入图片描述

(3)安装centOS镜像

在这里插入图片描述

在这里插入图片描述

(4)直接回车

在这里插入图片描述

(5)镜像检测,在这里可以直接按下Esc键,跳过检测

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(6)等待一会, 就会出现以下界面

在这里插入图片描述

(7)以root用户身份登录: 输入 root , 然后输入密码 即可登录成功

在这里插入图片描述

编程题:

5、给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

输入格式

第一行为 n(0<n<20),表示班里的学生数目;

接下来的 n 行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过 20,成绩为一个不大于 100 的非负整数。
输出

把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。

输入样例

4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28

输出样例

Joey 92
Hanmeimei 90 
Kitty 80
Tim 28

代码实现

// 添加了#define _CRT_SECURE_NO_WARNINGS,以消除关于scanf函数不安全的警告
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define maxSize 21

struct student {
    char name[maxSize];
    int score;
};

// 冒泡排序函数,按照分数从高到低排序,如果分数相同,则按照姓名的字典序排序
void bubbleSort(struct student s[], int n) {
    struct student temp;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            // 如果当前元素的分数比下一个元素的分数小,交换位置
            if (s[j].score < s[j + 1].score) {
                temp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = temp;
            }
            // 如果当前元素的分数与下一个元素的分数相等,但是姓名的字典序大于下一个元素的姓名字典序,交换位置
            if (s[j].score == s[j + 1].score && strcmp(s[j].name, s[j + 1].name) > 0) {
                temp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = temp;
            }
        }
    }
}

int main() {
    struct student s[maxSize], temp; // 定义一个结构体数组s来存储学生信息,temp用于交换临时变量
    int n; // 学生数量
    scanf("%d", &n); // 输入学生数量

    // 输入学生信息,包括姓名和分数
    for (int i = 0; i < n; i++)
        scanf("%s%d", s[i].name, &(s[i].score));

    // 调用冒泡排序函数,对学生信息进行排序
    bubbleSort(s, n);

    // 输出排序后的学生信息
    for (int i = 0; i < n; i++)
        printf("%s %d\n", s[i].name, s[i].score);

    return 0;
}

代码结果

在这里插入图片描述

6、用递归的方法求 Hermite 多项式的值

h n ( x ) = { 1 n = 0 2 x n = 1 2 x h n − 1 ( x ) − 2 ( n − 1 ) h n − 2 ( x ) n > 1 h_n\left(x\right)= \begin{cases} 1 \qquad n=0\\ 2x \qquad n=1\\ 2xh_{n-1}\left(x\right)-2\left(n-1\right)h_{n-2}\left(x\right) \qquad n>1 \end{cases} hn(x)= 1n=02xn=12xhn1(x)2(n1)hn2(x)n>1

对给定的 x 和正整数 n ,求多项式的值,并保留两位小数。

输入格式

给定的 n 和正整数 x。

输出格式

多项式的值。

输入样例

1 2

输出样例

4.00
// 添加了#define _CRT_SECURE_NO_WARNINGS,以消除关于scanf函数不安全的警告
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

// hermite递归函数
double hermite(int n, int x)
{
        if(0==n)
                return 1;
        else if(1==n)
                return 2*x;
        else
                return 2*x*hermite(n-1, x)-2*(n-1)*hermite(n-2, x);
}

int main()
{
        int n, x;

        scanf("%d %d", &n, &x);

        printf("%.2f\n", hermite(n, x));

        return 0;
}

==== 代码

代码结果

在这里插入图片描述

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux典藏大系:Linux驱动开发入门与实战.pdf》是一本关于Linux驱动开发的入门教程。本书将针对Linux操作系统的驱动程序进行详细介绍,帮助读者了解驱动程序的原理、开发和调试等方面的知识。 本书的内容主要包括驱动开发环境的搭建、Linux驱动模型和接口的介绍、驱动程序的编写和调试技巧等方面内容。书中通过实例和示例代码详细演示了驱动程序的编写过程,读者可以通过学习这些实例来加深对驱动开发的理解和掌握。 《Linux典藏大系:Linux驱动开发入门与实战.pdf》有以下几个特点: 1.全面介绍了驱动开发的基本概念和技术原理,适合初学者入门学习。 2.书中结合实际驱动开发案例,通过详细的代码解析和示例,使读者更加容易理解和掌握驱动开发技术。 3.重点介绍了驱动程序的调试技巧和常见问题解决方法,帮助读者快速定位和解决问题。 4.书中还提供了一些常用的开发工具和资源,包括驱动开发的相关文档和网站等,方便读者深入学习和进一步扩展知识。 总之,《Linux典藏大系:Linux驱动开发入门与实战.pdf》是一本在Linux驱动开发领域非常具有实用价值的书籍,适合对Linux驱动开发感兴趣的读者学习和参考。无论是初学者还是有一定经验的开发者,都可以通过学习这本书提供的知识来提升自己的驱动开发能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡林神不是猫

如果您觉得有帮助可以鼓励小卡哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值