自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 qsort函数

参考文档:https://www.cnblogs.com/laizhenghong2012/p/8442270.htmlqsort函数的定义及用法函数功能:qsort()函数的功能是对数组进行排序,数组有nmemb个元素,每个元素大小为size。函数原型:void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *

2021-09-12 19:29:00 140

原创 排序算法之(四)快速排序

1,基本原理(1)先从数列中取一个元素作为基准数(2)扫描数列,将比基准数小的放在左侧,比基准数大的或相等的放在右侧(3)再对左右区间重复第二步,直到各区间只有一个数示例:第一次:(6),7,4,8,9,2,3,11//6为基准数,将4,2,3放在6的左边 第二次:(4),2,3,6,(7),8,9,11//左边将4作为基准数,将2,3放在4左侧,6在4右侧//右边将7作为基准数,都比7大在7的右侧第三次:(2),3,4,6,7,(8),9,11//现在只有2,3和8,9

2021-08-29 11:25:22 146

原创 排序算法之(三)插入排序

1,基本原理插入排序是通过构建有序序列,对于未排序数据,在已排序列中向后扫描,将数据插入到一个有序数列中,从而得到一个新的有序数列示例:第一次:9,1,5,8,3 //1比9小,插到9前面第二次:1,9,5,8,3 //5比9小比1大,插到9前面第三次:1,5,9,8,3 //8比9小比5大,插到9前面第四次:1,5,8,9,3 //3比5小比1大,插到5前面第五次:1,3,5,8,9 //2,实现方法双重循环void charu(int *arr,int n)

2021-08-29 09:17:50 201

原创 排序算法之(二)选择排序

1,基本原理从第一个数开始和后面的数比较,选择最小的数,将两数交换,接着从第二个数开始与后面的数比较,这样就得到了一个升序排列的数列第一次:9,1,5,8,3 //交换 9 1第二次:1,9,5,8,3 //交换 9 3第三次:1,3,5,8,9 //不交换第四次:1,3,5,8,9 //不交换第五次:1,3,5,8,9 //不交换2,实现方法2.1双重循环void xuanze(int *arr,int n){ if(n < 2) {ret

2021-08-27 10:38:57 132

原创 排序算法之(一)冒泡排序

基本原理冒泡排序是一种交换排序,基本思想是将前一个数与后一个数进行比较,将较大的数放到后面,接着将第二个数和后一个数比较,这样将每次找到的大数放在后面,形成一个有序数列例如:第一次:9,1,5,8,3,7第二次:1,9,5,8,3,7第三次:1,5,9,8,3,7第四次:1第五次:第六次:...

2021-08-27 09:02:39 728

原创 时间复杂度

时间复杂度定义在进行算法分析时,语句执行次数T(n)是关于问题规模的函数,进而分析,T(n)代表执行总次数,而算法的时间复杂度用 O()表示,记作:T(n) = O(f(n))表示问题随问题规模的增大,算法执行时间的增长率和f(n)的增长率相同。一般情况下随着n的增大,T(n)增长最慢的算法为最优算法。二级标题...

2021-08-26 22:23:54 102

原创 C++学习笔记(一)

一,C++简介什么是C++C++是一种面向对象语言,即保留了C语言所有优点,有增加了面向对象的机制C++特点抽样 封装 继承 多态二,C++对C语言扩充1,bool类型在C语言中使用 ‘0’ 和 ‘1’ 来表示 ‘假’ ‘真’,而在C++中提供了数据类型来表示真与假,它有两个取值true和false例如:bool b;b = 3 ==3;//3 == 3为真bool类型可以用来做判断条件,并且指针可以隐式转换为bool类型,空指针转换为false,非空指针转换为true2,st

2021-08-11 23:32:39 87

原创 C语言链表

链表链表定义链表是一种常用的数据结构,链表类似于数组可以连续存储数据,但链表在物理地址上不是连续的,它是通过链表的指针域来存储不同节点的地址,将数据存储在数据域中(头节点是没有数据域的),而链表的最后一个节点的的指针域存放的指针存放的是NULL空地址。通链表可以方便的对我们的数据进行查找,遍历,删除,修改等等操作。为什么要使用链表为什么要使用链表?前面说了链表是类似与数组这种结构类型。链表解决了数组存在的许多问题,例如:数组的长度无法改变,数组元素替换删除复杂,无法存储多种类型的元素。创建链表#

2021-08-05 23:14:54 90

原创 LINUX学习笔记—Makefile学习(二)

Makefile多文件编译在我们实际开发过程中,是不可能编译单一文件的,有很多源文件需要一起编译。例如现在在一个项目文件夹中有四个 .c 文件 test1.c test2.c test3.c test4.c四个 .h 文件 test1.h test2.h test3.h test4.h我们希望生成一个test可执行文件这时我们的Makefile可以写为gcc test1.o test2.o test3.o test4.o -o testtest1.o:test1.cgcc -c test

2021-07-24 22:03:16 106

原创 LINUX学习笔记—Makefile(一)

为什么使用Makefile在linux下运行C语言源文件需要先使用gcc进行编译,在我们日常学习使用的过程中由于调用的源文件和头文件较少因此在linux命令行下运行不会太过麻烦,但一个大工程,源文件不计其数,其按类型、功能、模块分别放在若干个目录中,而makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。C语言运行的具体过程预处理将 .h .c 文

2021-07-24 15:40:09 81

原创 Linux系统编程—exec族函数

在Linux编程中我们使用fork()来创建新的进程,而子进程是父进程的副本,而有时我们希望通过子进程来执行另外的程序,而exec族函数可以按照指定的文件名或目录找到可执行的程序文件,并用来取代原来的数据段,代码段,堆栈段,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。并且这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。函数族:execl, execlp, execle, execv, execvp, execvpe在man 2

2021-05-12 22:05:43 281

原创 LINUX学习—FTP云服务器

FTP服务器通过之前的socket协议学习我们了解到

2021-05-08 17:22:05 155 1

原创 VMware虚拟机与主机之间文件传输的模式

我的Linux与主机以前传输文件都是通过Ctrl+Shift+C Ctrl+Shift+V和Ctrl+C Ctrl+V来实现的,之前也没有对虚拟机进行配置,但之前不知道怎么了这种方法不能使用,就导致写博客的时候源码不能及时应用到个人主机上。于是在这里我整理了三种虚拟机与主机之间的传输方法设置虚拟机先检查虚拟机与主机之间的快捷键方法在虚拟机下选择需要复制的代码段然后同时按Ctrl+Shift+C然后在主机下使用Ctrl+V就行了。或者在虚拟机下选择需要复制的文件右键选择copy在主机下复制也行。

2021-04-18 20:21:27 887 1

原创 Linux系统编程—网络编程

我们在进程间通信的学习过程中了解到,进程间的通信方式有无名管道,FIFO有名管道,消息队列,共享内存,信号量等等,但这些通信方式都是依赖于Linux内核,无法实现不同主机之间的通信,而这时就需要借助网络进行通信。而在网络编程之前我们要先了解一些基本概念:IP地址:IP即不同主机设备在以太网的位置端口号:表示不同主机之间通信服务方式字节序:字节序是指多字节数据在计算机内存中存储或网络传输时各字节的存储顺序小端字节序:低序字节存储在起始地址大端字节序:将高序字节存储在起始地址SOCKET网络编程(

2021-03-31 17:44:10 164 1

原创 Linux系统编程—线程

在将线程之前就不得不再讲一下进程进程与线程之间的关系进程是资源分配的最小单位,线程是程序执行的最小单位,进程可以看做是一个控制线程,一个进程在同一时间只能做同一件事,而有多个控制线程,就能在同一时间做不同的事。一个线程属于一个进程,而一个进程可以有多个线程。进程是程序化的实例,是担当分配系统资源的基本单位,是分配系统资源的基本单位,一条线程指的是进程中一个单一顺序的控制流。线程包含了进程内执行环境必须的信息。使用线程的原因1,和进程相比线程所需要的资源更少,每开辟一个进程就需要分配给他独立的地址空间

2021-03-27 14:18:07 105

原创 Linux系统编程—进程间通信

Linux系统编程—进程间通信什么是进程间通信:IPC是各种通信方式的统称,用于不同进程交换消息常见的进程间通信方式有:管道,消息队列,共享内存,信号量,Socket,Streams等。其中Socket和Streams支持不同主机上的两个进程IPC管道特点:1,它是半双工的,数据传输是单向的,具有固定的读端和写端。2,它只能用于具有亲缘关系的进程之间的通信3,它可以看成是一种特殊的文件,对于它的读写可以使用read,write函数。但它不属于任何文件系统,并且只存在于内存中4, 管道中的数

2021-03-23 13:25:23 108

原创 Linux系统编程笔记—进程

Linux系统编程—进程程序与进程什么是程序?什么是进程?如何查看系统中有哪些进程什么是进程标识符?什么叫父进程,什么叫子进程C程序的存储空间怎么分配进程创建使用fork()创建进程程序与进程什么是程序?程序是静态的概念,例如,gcc xxx.c -o a磁盘中生成的a文件就叫做程序1什么是进程?进程则是动态的概念,程序的运行起来,系统中就多了一个进程如何查看系统中有哪些进程1,使用ps指令查看,配合grep来查找ps -aux|grp xxx2,使用top指令查看,类似window

2021-03-20 14:42:19 109

原创 Linux系统编程—文件编程(补充)

在上一篇博客中我们了解了Linux中关于文件的常用api及其用法在本篇博客中我们将对这些api进行进一步运用实现cp()函数功能在Linux系统的vim编辑器中有一个用于文件复制的api :cp();例如我们在vim编辑器中创立一个文件vi demo1.c在demo1.c中写入一段代码再使用cp函数cp demo1.c demo2.c这样demo1.c 中的内容就被复制到demo2.c中了基本编程思想1,打开Src文件2,读Src到buf缓冲区3,打开/创建Des4,将buf缓冲

2021-03-17 23:12:22 77

原创 Linux系统编程笔记一文件编程

Linux系统编程笔记一文件编程文件编程常用apiopen()write()二级目录二级目录三级目录文件编程常用apiopen()在man 2手册中查看open函数的使用法则 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int

2021-03-16 21:55:48 119

原创 基于Linux下的ncurses图形库编写的贪吃蛇小游戏

基于Linux下的ncurse图形库编写的贪吃蛇小游戏项目要求项目实现源码项目要求通过使用链表的相关知识,以及调用ncurse的部分函数使得贪吃蛇具备以下功能:控制贪吃蛇的方向随机生成果实并使吃到果实的蛇身子变长撞到墙或自己撞到自己则游戏重新开始项目实现源码#include <curses.h>#include <stdlib.h>struct Snake{ int hang; int lie; struct Snake

2021-03-14 15:30:24 228

原创 基于Linux环境下的嵌套链表学生成绩管理系统

基于Linux环境下的嵌套链表学生成绩管理系统1,项目要求2,源代码1,项目要求链表A,每个节点存放一个新的链表B1,B2,B3,B4,B5的头结点。场景:一个年级,相当链表A该年级5个班,每个班5个人,相当于链表B1–B5做一个学生成绩管理系统学生成绩有语文 数学 英语功能: 录入成绩 找最三科总分的最高分 最低分 算出平均分2,源代码main函数int main(){ printf("##### welcome to the system ####\n"); int c

2021-03-13 22:23:00 389

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除