C语言
文章平均质量分 86
C语言的一些知识
山舟
这个作者很懒,什么都没留下…
展开
-
数据结构(四):二叉树
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:在介绍堆的过程中可能用到树的知识提示:以下是本篇文章正文内容。一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsim原创 2021-05-07 20:03:57 · 27857 阅读 · 8 评论 -
数据结构(三):栈和队列
文章目录一、栈1.栈的概念和结构2.栈的实现(1)栈的结构(2)栈的初始化和销毁(3)数据入栈(4)数据出栈(5)取栈顶的元素(6)判断栈是否为空二、队列1.队列的概念和结构2.队列的实现(1)队列的结构(2)队列的初始化和销毁(3)数据入队(4)数据出队(5)得到队头队尾的数据(6)判断队列是否为空感谢阅读,如有错误请批评指正一、栈1.栈的概念和结构栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除操作的一端成为栈顶,另一端称为栈底。栈中的元素遵循后进先出(LIF原创 2021-05-04 10:54:14 · 977 阅读 · 6 评论 -
数据结构(六):排序(二)
文章目录前言一、快速排序1.单趟排序(1)左右哨兵法(2)挖坑法2.非递归实现快速排序3.优化:三数取中法二、归并排序1.递归2.非递归实现三、计数排序排序算法的比较感谢阅读,如有错误请批评指正前言在数据结构(六):排序(一)中介绍了直接插入排序、希尔排序、选择排序、堆排序和冒泡排序,本文继续介绍剩下的快速排序、归并排序和计数排序一、快速排序快速排序的基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均.原创 2021-05-30 16:47:28 · 713 阅读 · 22 评论 -
数据结构(六):排序(一)
文章目录一、排序二、使用步骤1.引入库2.读入数据总结一、排序示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import ssl原创 2021-05-27 18:35:38 · 2290 阅读 · 20 评论 -
数据结构(五):堆
文章目录前言一、堆二、顺序存储二、堆的实现1.建堆2.读入数据总结前言在数据结构(四):二叉树中,树是通过链式结构来实现的。在本文中,堆将通过顺序结构实现。同样是树,为什么实现时存储方式不同呢?堆又有哪些特殊的性质呢?本文介绍的堆和操作系统虚拟进程地址空间中的不同,前者是一种数据结构,后者是操作系统中管理内存的一块区域分段。一、堆如果有一个数据的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中。且满足以下性质:(1)每个节点的值总原创 2021-05-09 16:03:01 · 3878 阅读 · 15 评论 -
数据结构(二):链表
文章目录一、链表的概念及其结构二、单链表的实现1.单链表的访问2.单链表头部插入数据3.单链表尾部插入数据4.单链表头部删除数据5.单链表尾部删除数据6.查找单链表中值为x的结点7.在某一结点的后面插入一个结点8.在某一结点的后面删除一个结点三、单链表的优劣四、 带头循环双向链表的实现1.双向链表的初始化2.双向链表尾部插入数据3.双向链表头部插入数据4.双向链表尾部删除数据5.双向链表头部删除数据6.寻找双向链表中值为x的结点7.在pos位置前插入一个结点8.删除pos结点9.得到链表的结点个数感谢阅读.原创 2021-05-02 13:47:18 · 3204 阅读 · 6 评论 -
位运算操作符、位操作符详解
前言位运算操作符和逻辑操作符一直是一个很令人头疼的问题,下面我为大家带来详细的解读。提示:以下是本篇文章正文内容,下面案例可供参考一、二进制位想要弄明白位运算操作符、逻辑操作符,首先要知道整型在计算机内存中的存储方式(位运算操作符、逻辑操作符针对的必须是整型数据)我们较为熟悉的是十进制,可以用十进制类比二进制十进制中数字的范围是0~9,不会出现10,同理,二进制只有数字0和1,没有2及以上的数字下面用111这个数字来举例如果这是一个十进制数字,那么它的大小是1 * 10 ^ 2 + 1 *原创 2021-01-26 09:15:34 · 1166 阅读 · 0 评论 -
C语言文件操作
文章目录一、文件的基础知识1.什么是文件2.文件名3.文件类型3.文件指针二、文件操作函数1.文件的打开和关闭2.读入数据总结一、文件的基础知识1.什么是文件磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。本文讨.原创 2021-04-03 10:59:30 · 1270 阅读 · 4 评论 -
动态增长的通讯录的实现
文章目录一、基本结构的实现1.菜单2.通讯录结构体二、通讯录功能的实现1.通讯录的初始化2.添加信息3.删除信息4.查找信息5.展示信息6.修改信息7.销毁通讯录三、完整代码感谢阅读,如有错误请批评指正一、基本结构的实现1.菜单通讯录需要实现添加、删除、查找、展示、修改,基于此可以设计出下面的菜单。代码如下(示例):void menu(){ printf("0.exit\n1.add\n2.del\n"); printf("3.search\n4.modify\n5.show\n\n");原创 2021-04-02 19:29:47 · 1317 阅读 · 3 评论 -
C语言动态内存管理
文章目录前言一、动态内存开辟函数1. malloc2.free3.calloc4.realloc二、常见动态内存错误1.对NULL的解引用操作2.对动态开辟的空间越界访问3.对非动态开辟内存使用free释放4.使用free释放一块动态开辟内存的一部分5.对同一块动态内存多次释放6.忘记释放动态开辟的内存感谢阅读,如有错误请批评指正前言为什么会存在动态内存分配呢?非动态的内存开辟方式有两种:int i;//在栈上开辟四个字节的空间char arr[10];//在栈上开辟连续10个一个字节的空间.原创 2021-04-01 16:10:25 · 1247 阅读 · 7 评论 -
自定义类型(二):枚举和联合体(共用体)
文章目录一、枚举常量1.枚举常量的定义2.枚举常量的优点二、联合体(共用体)1.联合体类型的定义1.联合体中的变量2.联合体大小的计算感谢阅读,如有错误请批评指正传送门:[自定义类型(一):结构体](https://blog.csdn.net/weixin_51983604/article/details/115298310)一、枚举常量枚举常量顾名思义就是把可能的取值依次列举,且这些可能的取值具有常量的属性。比如:一周的星期一到星期日是有限的7天,可以依次列举。性别有男、女,也可以依次列举.原创 2021-03-31 20:49:32 · 2816 阅读 · 6 评论 -
自定义类型(一):结构体
文章目录1、结构体的基础知识(1)结构体(2)结构体的声明(3)特殊的结构体的声明(4)结构体成员变量的访问2、结构体的自引用2、计算结构体的大小3、修改默认对齐数4、结构体传参感谢阅读,如有错误请批评指正1、结构体的基础知识(1)结构体结构体是一些值的集合,这些值称为结构体成员变量。结构体的每个成员可以是不同类型的变量。(2)结构体的声明代码如下(示例):struct tag//结构体的名称{ member - list1;//内部可以定义多个不同类型的成员变量 member - l.原创 2021-03-29 14:08:18 · 2627 阅读 · 11 评论 -
字符串函数的模拟实现(strlen、strcpy、strcat、strcmp)
文章目录一、strlen1.库函数中的strlen2.模拟实现strlen(1)计数器实现(2)递归实现二、strcpy1.库函数中的strcpy2.模拟实现strcpy三、strcat1.库函数中的strcat2.模拟实现strcat四、strcmp1.库函数中的strcmp2.模拟实现strcmp感谢阅读,如有错误请批评指正一、strlen1.库函数中的strlen库函数中的strlen是用来求字符串长度的(不包含’\0’)用法如下:int main(){ char arr[] = ".原创 2021-02-14 08:53:49 · 782 阅读 · 2 评论 -
函数指针和函数指针数组
文章目录一、函数指针二、函数指针数组三、应用:两个数的加减乘除运算感谢阅读,如有错误请批评指正一、函数指针数据在内存中都有自己的地址,地址需要指针变量来保存,我们常见的指针有char* 、int* 、double*、float*。函数也有自己的地址,保存函数的地址的变量就是函数指针。但函数指针的形式较为复杂,下面举几个例子来说明函数指针的形式。void (* pfun1)();pfun1 先和 * 结合,说明pfun1是指针,指针指向的是一个函数,指向的函数无参数,返回值类型为void。i.原创 2021-02-10 08:20:53 · 5648 阅读 · 3 评论 -
浮点数在内存中的存储
文章目录前言一、浮点数的表示方法二、浮点数在内存中的存储1、符号位S2、有效数字M3、指数部分E三、感谢阅读,如有错误请批评指正前言我们都知道整型数据在内存中是以补码形式存储的,并且我们可通过原码、反码和补码之间的关系很容易地进行计算。那么浮点数在内存中又是如何存储的呢?一、浮点数的表示方法关于浮点数的表示方法,许多都是标准规定的,不必深究。根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:(-1) ^ S * M * 2 ^ E其中:(-.原创 2021-02-03 22:25:39 · 4337 阅读 · 6 评论 -
C语言实现简易扫雷
一、基本思路和步骤需要两个相同大小的棋盘(我的代码中分别命名为mine和show),用mine来实现对雷的操作,把show数组打印在屏幕上,需要把玩家对show数组的处理变成对mine数组的处理步骤1.用一个简易的菜单来选择开始或退出游戏2.初始化mine数组和show数组3.对mine数组操作,布下雷4.打印show数组,扫雷并判断输、赢或继续游戏二、代码实现1.用一个简易的菜单来选择开始或退出游戏这一部分与我之前的博客《C语言实现三子棋》中相同,此处不再赘述代码如下(示例):voi原创 2021-01-26 19:37:26 · 1151 阅读 · 0 评论 -
C语言实现三子棋
一、基本思路1.用一个简易的菜单来选择开始或退出游戏2.打印初始棋盘(没有落子的棋盘)3.玩家下棋4.电脑下棋5.上述两步循环进行,直到有一方胜利或双方达成平局6.说明哪方获胜或者说明平局(注:以上代码较多,所以我将代码分为三块:test.c用来测试,game.c用来放需要的函数,game.h引头文件和放函数声明)二、代码实现1.用一个简易的菜单来选择开始或退出游戏首先可以设想一个简易的菜单(这里的菜单不必太过复杂,只要能实现开始和退出即可)由于不论玩家是否想继续游戏,菜单都必须出现,原创 2021-01-25 11:28:45 · 609 阅读 · 3 评论