c语言
文章平均质量分 56
自律的阿龙
细水长流,努力幸运共存
展开
-
结构体大小计算以及对齐规则
4.如果嵌套了结构体,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。就比如int 的 对齐数为4,那他只能在结构体的 0 4 8 12的位置存。0 - 15为16字节,然后找到我们最大的对齐数,这里是double,为8,此时为16字节为8的倍数,所以要开辟的结构体大小就是16字节。注:VS中的默认对齐数为8,不是所有编译器都有默认对齐数,当编译器没有默认对齐数的时候,成员变量的大小就是该成员的对齐数。这个预处理指令中()里填的就是对齐数。原创 2024-09-10 16:23:54 · 817 阅读 · 0 评论 -
C语言希尔排序详解!!!速过
由于第一步的开荒,数组比刚开始有序的多但还是模糊,接下来如果我们把间隙改小,那每一个小组的数字就会增多,但又由于之前第一组的原因其实有些数据已经其实已经到了属于自己的位置,那接下来就会减少损耗(不用交换数据)。总的希尔排序,就是先分组,在排序,每次使模糊的答案清晰一点(每一次的损耗都会减小),最终当gap == 1时,只需轻轻擦拭即可得出答案。这一阶段呢就是要将每个组进行一个排序让其每个组都是有序的,这样形成一个散乱但比之前更有序的结果,可以从图中第一轮结果看出。首先传入一个数组a,和数组个数n。原创 2024-02-16 17:20:19 · 712 阅读 · 0 评论 -
快速排序详解!c语言
如果left(begin)先走,如果只有最后一个数字比key大这时begin 和 end 相遇,反而把key换到了最后一个位置,而唯一比key大的数字反而去了第一个,那就不满足,左小右大的原则了。快速排序顾名思义,快速的排序,事实也如此,他的应用面广泛同时确实很快,因为他的时间复杂度是o(nlogn),相比前面的(插入冒泡选择)三小只来说,它的速度确实遥遥领先,但相对的思想也更复杂。为什么要从right开始,因为你的key在数组的第一个位置,所以最后一次和key交换的数据一定要是比key小的。原创 2024-02-16 17:19:16 · 938 阅读 · 0 评论 -
选择排序!!!基础排序详解 C语言版
这是一个选择排序的流程图,其实很简单,就是每次挑选数字中最小的作为第一个 ,直到整个数据有序就结束了顾名思义,选择,那就是选取,选取其中最小的,放在最前面的位置,已经选好的位子,下一次就不加入选择了。每一次安排一个位置,直到所有位置都安排了。原创 2024-01-05 15:14:53 · 478 阅读 · 0 评论 -
C语言 二叉树详解(自我理解版)!!!二叉树的实现
(就如果J 是 E的右节点的话,那E的左节点就没有数据就浪费了一个空间)这里的父节点和子节点的计算可用 公式 child = parent / 2 + 1 (左节点)或 + 2(右节点).。当然既然是链式结构,上面的顺序结构可以找到父亲节点,那链式结构也有办法找到父节点,这就要用的三个指针的结构体,左右孩子节点,再加上父亲节点的指针。如图这是一个完全二叉树,完全二叉树与普通二叉树之间的差别在于,完全二叉树 的每一个子节点必须先有左边的子节点,才能有右边的子节点。:一棵树中,最大的节点的度称为树的度;原创 2023-12-12 20:37:43 · 1318 阅读 · 0 评论 -
C 语言 二叉树的实现详解!!!(每种方法都详细解释,哪里不会看哪里)
(建议先看后续遍历,就是先遍历全部节点,在进行操作)进行从遍历的最后一个节点开始,进行free,如果用前序遍历free的话,那你第一个根节点都free了你就找不到你的子树了,而中序遍历的话,就比如你刚把D删除了,中序遍历的话就会把 B先删除,那就找不到E节点,E节点就没被删除。那也就明了了 中序遍历就是 你先把左边走到 底 然后 先打印左边,在打印根的,在打印右边的。就像这里的打印的一样,你先把A打印出来了,然后 在走你的左边,打印出B后继续走B的左边,打印出D后,返回到B节点,B又走他的右边 打印E。原创 2023-12-12 20:35:23 · 1267 阅读 · 0 评论 -
c 语言 堆的解析(自我理解)!!!堆排序,建堆
首先先看一个图片小顶堆的意思就是顶 的元素最小,两个子节点的元素要大于父节点。大顶堆同理。小顶堆就像是一个金字塔。第一层很小,然后后面是依次增大,就像社会人才金字塔图一样。大顶堆就可以想做,每个人的财富拥有值的金字塔图,上层人的钱很多,而底层的人钱最少。那堆能干嘛呢,首先堆是可以用来排序的,而且排序的时间也是较快,处于(n*logn)这个层级。还有一个就是在频繁的出队和入队时,用堆是一个不错的选择。如果用数组和链表来完成pop和push时,时间复杂度是O(n)而用 堆就是O(log n)。原创 2023-12-08 18:36:18 · 1164 阅读 · 0 评论 -
循环队列详解!!c 语言版本(两种方法)双向链表和数组法!!
首先关于循环队列,你得先知道什么是队列,详情可以去看看我的另一篇博客数据结构 栈与队列详解!!-CSDN博客这里简单的说一下,队列就是字面意思,你在银行排队,你不是什么VIP只是普通人,那你先排队那你就先得服务,队列就是 你先插入的数字(入队),就得先放出(出队)。大致就是这个意思。而循环队列呢?他的原理也是队列,但和队列不同的地方在于,他的空间是固定的。在一个空间里进行重复的入队出队。这是一张循环队列的大致图。其中和队列一样有两个指针指向头和尾。添加实在尾针处加,而删除就是将队首的元素删除。原创 2023-11-22 14:11:41 · 240 阅读 · 0 评论 -
数据结构 栈与队列详解!!
关于内存中的栈和数据结构中的栈是不同的,本章着重讲的是数据结构的栈。这是一张关于栈的表达图。从图中可以看出栈很像是一副卡牌,发牌时只能从上取出,即出栈。而入栈则是像你出牌后,要把你出的牌压在上一张出的牌上面。这是入栈。栈可以用链表或者顺序表实现,原创 2023-11-18 18:55:13 · 393 阅读 · 2 评论 -
环形链表解析(c语言)c语言版本!自我解析(看了必会)
就以这个为例,当slow走到2的时候,fast已经走到-4,那他两距离相差1,下一次fast和slow必定相遇,因为两人每次走的距离差为1,把slow入环时两者的距离记作N,因为两者的距离差为1,N-1-1-1-1-1......N总有被减到0的时候,减到0那两者就是在一个位置,就相遇了。这就是最普遍的快慢指针,fast走的是slow的路程的两倍,这就是相当于一个追击问题,再跑1000米的时候,你的好朋友的配速是你的两倍,最终他会超你一圈一个道理。就是L的距离等于这么fast走的这么多圈后减掉 X的距离。原创 2023-11-12 14:00:19 · 186 阅读 · 0 评论 -
贪吃蛇(c语言)!!源码加解析
1.建议先把源码拿去VS中测试一下了解这个贪吃蛇是什么样的1.建议先把源码拿去VS中测试一下了解这个贪吃蛇是什么样的。原创 2023-11-11 14:54:42 · 531 阅读 · 0 评论 -
数据在内存中的存储(一个新手的理解)
超过一个字节的数据在内存中存储时,就有存储顺序的问题,按照不同的存储顺序,我们可以把分为大端字节存储和小端字节存储。在不同的编译器中不同。大端存储:通俗来说就是数字的比较大的位数存到了前面。就像 0x11223344,如果为大端存储的话那在内存里面 先存储的就是 11 22 33 44,和上面的图片相反小端存储:就是数字的比较小的位数存到了前面。和上图一样!!!一个自编小口诀,前大大,前小小。就是前面如果是数字位数大的数字的话就是大端存储,反之相同。原创 2023-10-03 10:33:58 · 105 阅读 · 0 评论 -
字符函数和字符串函数!!,学起来奥
但参数1字符串中出现,参数二中的字符时,会将这个字符符号,改为‘\0’ ,返回的指针是指向的是这个字符串的开头,就类似 字符串 abc,d。和 第二个参数为 ,。那返回的就是a的地址,打印出来的是字符串为abc。第一个参数是 目的地参数,用来 作为主参数,而第二个 source 则是 发源地参数,用来更改目的地参数,第三个参数num 则是用来控制 要更改的字节个数。具体用法和strcmp 一样 只是多出 一个控制字符的 numble 参数,区别和上面的 strncpy 和 strcpy 的区别一样。原创 2023-09-19 13:40:34 · 78 阅读 · 0 评论 -
strstr的使用和模拟实现
之后cp++ 让cp的地址+1,在进行检视,这时 第一个字符串就变为了 yangjianglong ,然后检视后发现 *s2 已经变为 ‘\0’ 就是 4个字符都相同时。第二个while循环的意思是 *s1 和 *s2 不为 0 和 *s1 - *s2 为0时进入循环。如果在*s2还没为 ‘\0’ 时循环就结束,就是像 yyangjianglong 和 yang 字符串,因为第一个字符串前面有两个y 函数会从 出现 第一个 y 开始检视,发现第二个字符不同时就跳出了循环。*s2 为 0 的话就返回 cp。原创 2023-09-17 11:02:41 · 72 阅读 · 0 评论 -
strcmp的使用和模拟实现
如果相等 两个参数的地址+1,在向下比较,直到出现不同,比较出结果。因为前面的yang是相同的,那么就从 j 和 z 比较。返回int 的原因是 原本的 strcmp 返回的是 大于 0 的数字 和 0 和 小于 0 的数字。返回 *str1 - *str2 的意思是,返回这时候两个地址内的值差。用const 来限制 两个 参数,因为两个参数都是不能更改的,只是比较。第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字。第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字。第⼀个字符串等于第⼆个字符串,则返回0。原创 2023-09-17 10:27:00 · 90 阅读 · 0 评论 -
strcat的使用和模拟实现
第二个while 循环的意思是 将解引用的 dest 同位置的值改为 src 的位置的值,说人话就是在dest 后面 添加 src 字符。字面意义,就是将两个字符串接起来(就像人体蜈蚣),需要传入两个参数,第一个参数用来作为头部,第二个参数则是用来则为尾部,贴在一参数的尾部。用一个 ret 指针 接收 dest 是为了之后 返回的是 dest 的首地址。例如,字符串 “yangjianglong” 作为第一个参数,字符串“mzq” 作为第二个参数。⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。原创 2023-09-17 09:50:43 · 165 阅读 · 0 评论 -
strcpy函数的使用和模拟实现
形参中destination则是将 source 的复制品,打印在相同的位置,就像 字符串 yangjianglong 作为destination。因为 函数只是改变 dest 变量,而不改变 src变量,所以src 用 const 限制起来,起到保护作用,防止src 被更改。将 dest 指针,用 指针变量 ret 接收,是为了,在函数结束后仍然返回的是 dest 的首地址。这里while循环的意思是,解引用两个变量,更改 dest 同位置的值为src 同位置的值。4.目标空间必须可变,不能被限制。原创 2023-09-17 09:30:40 · 73 阅读 · 0 评论 -
交换两个整数,自己写一个swap库函数,简单!!!
题⽬描述:写⼀个函数Swap,可以交换两个整数的内容。注意必须实现成函数完成。输⼊2个整数,调⽤⾃定义函数Swap,完成2个整数的交换。先看代码,下面有解析奥!!原创 2023-08-27 11:56:42 · 1309 阅读 · 0 评论 -
字符转换,大小写转换。简单题!!!有几个库函数的使用方法
然后用while循环,当然也可以使用for循环,for循环就是遍历到 出现\0 为止。这里用while循环,表达式给的buf[ i ] 因为下面有i ++ ,随着i ++ 最终 会出现 \0. \0 也相当于0,所以就为假,跳出循环。循环内的 判断语句则就是判断字符串中的每个字符是 大写字母还是小写字母。原创 2023-08-27 11:48:31 · 115 阅读 · 0 评论 -
找出盗窃者,找出说慌者,理解题!!(一看就会奥)
题⽬描述:某地发⽣了⼀件盗窃案,警察通过排查确定盗窃者必为4个嫌疑⼈的⼀个。以下为4个嫌疑⼈的供词:A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个⼈说了真话,1个⼈说的是假话。现在请根据这些信息,写⼀个程序来确定到底谁是盗窃者。先看代码,下面有解析。原创 2023-08-27 11:25:02 · 127 阅读 · 0 评论 -
计算最⼤值和最⼩值的差值,新手题,一看就会!!!
输⼊10个整数,写代码找出其中最⼤值和最⼩值,计算最⼤值和最⼩值的差,并打印出差值结果。原创 2023-08-26 11:42:44 · 112 阅读 · 0 评论 -
分数求和,新手题!!一看就会,计算 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - … + 1/99 - 1/100 的值。(两种方法)
计算 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - … + 1/99 - 1/100 的值,并打印出结果,(注:除法分为整数除法和浮点数除法,要计算出⼩数,得采⽤浮点数除法,浮点数除法的操作数中⾄少要保证有⼀个浮点数。先给代码,解析在下面奥!!!(有两种方法)原创 2023-08-26 11:31:30 · 821 阅读 · 0 评论 -
打印最小公倍数,简单题!!(看了必会奥)
先看代码,下面有解释奥!!。(下面有辗转相除法看了就会奥。原创 2023-08-25 12:04:25 · 41 阅读 · 0 评论 -
判断三角形,简单题,新手必会!!!
因为三角形两边之和大于第三边,故先判断三边关系,如果两边之和大于第三边,则进入第一个if 语句内部,判断其是否是特殊三角形。&&的意思类似于数学里的并且,即 这个符号两边都是真才是真,有一边为假,那整体判断为假。|| 的意思类似数学里的 或 ,即符号两边只要有一个真即可,整体就为真。首先输入三个数字,作为三角形的三边。如果不是则不是三角形。原创 2023-08-23 11:37:38 · 63 阅读 · 0 评论 -
打印99乘法表,简单题,新手必会!!!
首先你要知道99乘法表有9行,每一行的式子随着数字的加大而增多,就像第一行只有1 * 1= 1,第二行就有2 * 1 = 2, 2 * 2 =4。第二个for循环则是用来控制 j 变量的变换,但它最多只能和 i 一样大,为什么呢,因为 乘法表每一行的 相乘的两个数字,后一个 总是 比 前一个小的,所以乘法表像是一个直角三角形。一行的式子比一行多。第一个for循环则是用来控制换行printf(“\n”),和控制 i * j 的式子,就是 1 * 1 = 1 ,2 * 1 =2。的前面的第一个数字的。原创 2023-08-23 11:22:38 · 473 阅读 · 0 评论 -
打印1-100的奇数,简单题,一看就会!!
【代码】打印1-100的奇数,简答题,一看就会。原创 2023-08-23 11:12:08 · 302 阅读 · 0 评论 -
打印素数c语言,3个思路奥!!!
可以思考如果是100 开平方就是 10,就是说如果两个数相乘 10 * 10是极限,不可能 11 * 10,只可能是更小的数字 类似 2 * 50 和 4 * 25,它们前面的这个数字不可能超过10,说明两个数字不能同时超过10,相乘才能等于100.在1 的思路上排除偶数的可能性,因为偶数肯定会被2整除所以偶数都不是素数,所以起始变量的值为3,且每次都+2这样遍历就很好的排除了偶数。第二个for循环则是用来取出数字来试除,i为被除数,j则为除数,直到j = i,循环结束。原创 2023-08-21 15:21:22 · 80 阅读 · 0 评论 -
冒泡排序(升序版),普通思路和优化思路,降序也是同理!
先看整体代码,代码解释在下面!!原创 2023-08-21 14:54:37 · 63 阅读 · 0 评论 -
字符串左旋,简单思路+改进思路!!!
内循环中表达式的意思是,让字符串从A进行字符串交换,直到A移到D的位置,并且 (*(brr+1))(意思是下一个字符)是\0 时停止。因为当A走到D区域时就会停止,因为D区域下一个字符就是\0 ,所以将brr现在位置的值改为tmp,实则是为了将D改为A。用while循环进行循环左旋,以a作为表达式,就是在左旋每进行完一次,就让a--直到a = 0,为了避免arr被更改首先定义一个brr接收arr指针,然后用一个变量tmp接收 *brr(解引用brr),得到ABCD中第一个字符A。原创 2023-08-20 10:37:26 · 34 阅读 · 0 评论 -
模拟实现库函数strlen 3种方法!!!
这个方法,首先你要知道,一个指针(地址)- 一个指针等于什么,两个指针相减,结果是两个指针中间的元素个数,理解了相减之后,就可以构思代码,首先将arr首元素地址赋予xm上,还是得用遍历的方法,每有一个字符那start的地址+1直到遇到\0 ,最后再用start - xm即可算出中间相差的元素个数。原创 2023-08-19 12:01:53 · 89 阅读 · 0 评论 -
统计二进制中的1的个数,三种做法!!!
先给代码哦,自己想的解析在下面。!!原创 2023-08-15 17:20:59 · 336 阅读 · 0 评论 -
找单身狗,在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。
直接给代码,不会的uu,可以看看下面自己想的解释。原创 2023-08-15 16:48:21 · 151 阅读 · 1 评论 -
求最大公约数了,,兄弟们!!两种做法
1.c用来储存两个数字的余数,因为第一次a % b = 18 % 24;这样的话商为0余数为18,将18在表达式中赋值给c,之后a b变量交换,b 中拿到余数c,a则为原来的b。原创 2023-08-11 19:47:59 · 60 阅读 · 1 评论 -
关于扫雷小游戏(简易版)
因为扫雷是在棋盘上工作,正常来说只显示一个棋盘,但一个棋盘的构思方法,对于初学者来说暂时不能实现,所以我采用的是两个棋盘的形式。分别为打印雷区,和棋盘展现。由于整体的棋盘更像是一个大的正方形,所以采用二维数组进行打印。mine为种雷的棋盘数组,show为棋盘展现的数组。1初始化棋盘,2打印展示棋盘,3生成地雷,4排查雷。//数组//'0'//'*'//棋盘打印//布置雷//排查雷。原创 2023-08-03 20:20:35 · 97 阅读 · 0 评论 -
C语言函数笔记分享!!!
1.语法:ret_type fun_name(参数){ 函数体 }2.自定义函数必须要有返回值或者没有返回值用void做type3.如果有参数要明确参数的类型4.形参和实参:形参用于函数内部,实参用于写程序的值实参传参数的值给形参形参和实参正常情况下取的地址是不同的,但如果是数组地址的话两者取的地址相同。形参相当于一个住酒店的函数,不是固定房产,函数结束后,离开酒店销毁地址。原创 2023-07-28 21:13:47 · 33 阅读 · 1 评论 -
c语言第二天奥
c语言新手的第二天原创 2023-07-21 17:12:10 · 50 阅读 · 1 评论 -
c语言初体验的阿龙
一篇c语音初体验的有感而发博客原创 2023-07-20 19:24:33 · 101 阅读 · 1 评论 -
c语言,杨辉三角解析,超详细自我了解!!!速看只有新手懂新手
int b = 0;for (a = 1;a < 12;b < a;原创 2023-07-31 18:52:23 · 443 阅读 · 0 评论 -
求闰年了,兄弟们!!!(新手必懂)
废话不多说先来代码,讲解在下面!。原创 2023-08-11 20:05:06 · 61 阅读 · 1 评论 -
c语言一.10个整数求最大值和二.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
一. 10个整数求最大值二.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果原创 2023-07-26 15:15:44 · 49 阅读 · 1 评论