![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 70
tangke121
这个作者很懒,什么都没留下…
展开
-
C语言实现猜拳游戏
一、问题c语言实现猜拳游戏,用户自己选择对手,可以创建玩家角色。可以记录当前对战情况(对战局数,得分情况)二、解决思路猜拳游戏大家都不陌生,从小玩到大,遇到棘手的选择,猜拳往往是最能服众的处理办法。那么今天我们就用C语言来实现这个小游戏。这题比较简单,创建两个字符数组,对应对手和玩家。接着用户选择要出的(石头,剪刀,布),然后是电脑选择,最后把两个选择进行对比,判断输赢。三、代码实现第一...原创 2020-02-12 17:50:43 · 8369 阅读 · 0 评论 -
排序:【详解】快排三种方法实现(优化版,三数取中),归并排序,递归和非递归版本
快排三种方法实现(优化版,三数取中),归并排序,递归和非递归版本原创 2021-02-10 11:58:26 · 357 阅读 · 0 评论 -
(详细图解)直接插入,希尔,选择,堆排,冒泡,计数排序
直接插入,希尔,选择,堆排,冒泡,计数排序原创 2021-02-08 21:09:36 · 172 阅读 · 0 评论 -
剑指offer07:根据前序遍历和中序遍历重建二叉树(思路,图解,代码)
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。原创 2021-02-06 17:06:03 · 164 阅读 · 0 评论 -
数据结构:二叉树的详解及相关操作(创建二叉树,前、中、后、层序遍历,节点个数及衍生问题,判断完全二叉树,查找)
数据结构:二叉树的基本操作(创建二叉树,前、中、后、层序遍历,节点个数及衍生问题,判断完全二叉树,查找)原创 2021-01-21 17:05:13 · 221 阅读 · 0 评论 -
数据结构:队列介绍以及基本操作
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特性FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头原创 2021-01-15 14:45:30 · 285 阅读 · 0 评论 -
数据结构:栈的介绍以及基本操作
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶原创 2021-01-15 14:25:05 · 434 阅读 · 0 评论 -
数据结构:双向带头循环链表的基本功能实现
带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了。原创 2021-01-10 11:09:59 · 289 阅读 · 0 评论 -
对链表进行插入排序(C语言实现)
一、题目要求对链表进行插入排序。插入排序的动画演示如下。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1-原创 2021-01-09 10:26:11 · 10239 阅读 · 4 评论 -
C语言常用字符串函数使用及模拟实现(strlen,strcat,strcpy,strcmp)
一、strlenstrlen函数用法:参数只有一个,传入指向字符串首地址的指针,返回该字符串长度(第一个字符到’\0’的长度)注意事项:注意与sizeof(str)的区别,sizeof求大小,包括’\0’,strlen求长度,不包括’\0’。//size_t strlen ( const char * str );标准库函数声明sizt_t My_strlen(const char *str) {//模拟实现 if (str == NULL) { //判断字符串是否为空 return 0;原创 2020-11-23 22:47:24 · 618 阅读 · 0 评论 -
C语言学习笔记——操作符总结
分类算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式下标引用,函数调用和结构成员算数操作符+求两个数的和-求两个数的差*求两个数的积/求两个数的商%取模(两个数相除的余数)注意事项:注意基本规则,如0不能做除数,这在编译时不会报错,但程序在执行时往往会出错。除了 % 操作符...原创 2019-11-12 23:05:02 · 288 阅读 · 0 评论 -
C语言学习笔记——指针小结
一、什么是指针其实要理解指针也没什么难的,它也不过是一个变量而已。只是保存的内容是一个地址罢了。每定义一个变量都有其对应的地址,根据变量的类型,指针也分为,整形指针,字符型指针,数组指针等等。再者,指针本身也是变量,也有其对应的地址,保存指针地址的指针就叫做二级指针,以此类推,也有三级指针,四级等,但是一般情况下最多就用到到二级指针。...原创 2020-11-17 22:34:29 · 190 阅读 · 0 评论 -
c语言实现三子棋游戏(优化电脑落子)
实现三子棋首先要有一个棋盘,在C语言里,最好的实现方式就是二维数组了。所以第一步就是创建二维数组并对其进行初始化。接着我们需要一个函数,show函数,实现每一次落子过后棋盘的展示。然后是computer__move函数,实现电脑的落子。最后需要一个判断函数,每一次落子过后都要进行判断游戏是否继续。原创 2019-11-03 15:03:27 · 532 阅读 · 4 评论 -
c语言扫雷游戏,可以递归展开非雷位置,第一次不踩雷
c语言实现扫雷游戏,非雷位置可以递归展开,且为保证游戏体验,用户第一次扫雷时不能踩中雷。原创 2019-11-06 11:12:39 · 1459 阅读 · 2 评论 -
c语言不创建临时变量交换两个数的值
一、问题.不允许创建临时变量,交换两个数的内容二、解决思路c语言交换两个变量内容的常规思路是创建第三个变量,借此来实现交换。但是题目要求我们不能创建临时变量,这就使我们不得不另辟蹊径。从题目入手,不允许创建临时变量,交换两个数的值。既然是数那就可以进行相应的运算。在深入想想,答案就出来了。那我们假设有两个变量a和b,分别赋值4和8。整个交换过程分三步:第一步,把a与b的和赋值给a,此时a=1...原创 2019-10-10 16:29:53 · 1010 阅读 · 0 评论 -
c语言位操作符&, | , ^(按位与,按位或,按位异或)
一、概述从这几个操作符的名称来看,都是按位什么,那他按的是什么位呢?以int整型来举例,一个int型变量占4个字节大小,而一个字节是8个比特位,所以一个int型变量就有32个比特位。比特位就是计算机中最小的单位,用来存放二进制数。因为计算机只能识别二进制数,所以我们计算机上所有的数据都是先转换成二进制数然后再进行处理的。例如,我们定义一个整型变量 int a = 8; 我们看到的数字是“8”,而...原创 2019-10-13 13:55:47 · 1165 阅读 · 0 评论 -
C语言学习笔记——内存对齐
一、内存对齐对于结构体的基本使用这里不做说明,如果有疑问参考我的另一篇博客https://blog.csdn.net/qq_43647942/article/details/104306511我们先来讨论一个问题,结构体的大小struct s1{ char c1; int i; char c2;};这个结构体的大小是多少呢?我相信你内心一定有一个答案,6字节;按照常理来说...原创 2020-02-21 19:17:04 · 311 阅读 · 0 评论 -
C语言自定义类型-----位段,枚举,联合(共用体)
一、位段位段和结构体的声明类似struct A{ char a:3; char b:4; char c:5; char d:4;};这里我们声明了一个位段类型A,与结构体不同的是,每个成员后面都有一个冒号且都跟一个数字,其含义是该成员占用几个比特位。位段的内存分配位段的成员可以是int 、unsigned int、signed int、或者是char(属于整型家族)类型。...原创 2020-02-20 16:42:54 · 253 阅读 · 0 评论 -
C语言学习笔记——动态内存管理(malloc、calloc、realloc、free)
一、 malloc以前要创建一个长度不确定的数组;为了避免出现问题,只能定义尽可能大的数组,但这样往往会造成空间浪费。现在我们来学习一个新的函数:malloc它可以在堆上开辟一定大小的空间,以指针的形式返回。下面介绍其具体使用方法void *malloc(size_t size);这就是malloc函数,它只有一个参数(无符号整型),就是要开辟空间的大小。函数的返回值为任意类型的指...原创 2020-02-16 11:29:39 · 396 阅读 · 0 评论 -
C语言学习笔记——链表(单链表)
链表是什么呢,其实就是数据的一种存储方式。相对于线性存储,链表是链式存储。它不像数组,每个元素的物理地址是相邻的。链表中每个元素(通常称为节点)的地址是随机的。每当要添加新节点时,链表就要开辟新的空间。即有多少个节点,就开辟多少空间,不会造成空间浪费,这就是链表的优势所在。原创 2020-02-15 10:52:50 · 1342 阅读 · 1 评论 -
C语言学习笔记——结构体
一、为什么要有结构体?首先,我们要明白一点,我们所写的所有程序都是为了更好地服务人类。我们在程序里会创建很多变量,有时候我们需要用某个变量来描述一个人,而一个人身上的特点有很多,不止一个,如果只用一个特点来描述就显得不那么准确。所以我们要创建多个变量来描述同一个人;而把这多个变量放在一起,起一个新名字就是结构体。二、结构体的声明在声明结构体时,必须列出它所包含的所有成员。这个列表包括每个成员...原创 2020-02-14 11:07:06 · 699 阅读 · 0 评论