自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言编程实战:每日一题:环形链表Ⅱ

本文介绍了环形链表Ⅱ问题的解法,基于Floyd判圈算法(龟兔赛跑算法)。算法分为环检测和入口定位两个阶段:通过快慢指针相遇判断是否有环,再利用数学推导确定环入口位置。时间复杂度O(n),空间复杂度O(1)。文章包含详细原理分析、执行步骤、流程图和C语言实现代码,帮助理解如何高效检测环形链表并定位入口节点。

2025-12-01 15:21:53 581

原创 C语言编程实战:每日一题:环形链表

本文介绍了Floyd判圈算法(龟兔赛跑算法)检测链表环的方法。通过快慢指针(slow每次1步,fast每次2步)遍历链表,若两指针相遇则存在环。算法时间复杂度O(n),空间复杂度O(1),是高效检测链表环的经典解法。附有流程图和C语言实现代码,适用于LeetCode环形链表问题。

2025-11-30 19:55:09 818

原创 C语言编程实战:每日一题:相交链表

本文介绍了如何判断两个链表是否相交并找到交点的方法。通过计算两个链表的长度差,先让较长链表的指针移动差值步数,使两个指针处于同一起点位置,然后同步遍历直到找到相同节点即为交点。文中提供了流程图、具体步骤示例和代码实现,使用C语言完成了这一算法,适用于解决LeetCode上的相交链表问题。

2025-11-29 08:49:53 859

原创 C语言编程实战:每日一题 :链表的回文结构

本文分享了判断链表回文结构的算法思路与实现。通过寻找中间节点并反转后半部分链表,然后逐一比较前后半段节点值来判断回文性。文章提供了完整的C++代码实现,包括中间节点查找、链表反转和回文判断三个核心函数。该方法时间复杂度为O(n),空间复杂度O(1),是解决链表回文问题的经典方案。

2025-11-28 09:36:51 290 1

原创 C语言编程实战:每日一题 :返回倒数第k个节点

本文介绍了使用快慢指针算法高效查找链表倒数第k个节点的方法。通过让快指针先走k步,然后快慢指针同步前进,当快指针到达末尾时,慢指针正好指向目标节点。相比传统遍历两次的方法,该算法只需一次遍历即可完成,时间复杂度为O(n)。文章提供了清晰的思路解析和C语言实现代码,适用于LeetCode相关题目解答。

2025-11-27 15:21:54 404

原创 时间复杂度:容易算错?单看循环算是不对的!

本文介绍了时间复杂度的概念与计算方法,重点分析了二分查找的时间复杂度特性。时间复杂度是衡量算法效率的关键指标,反映算法执行时间随输入规模的增长趋势。文章指出常见误区,强调不能仅凭循环次数判断复杂度,并以二分查找为例说明对数阶O(log n)的特性。通过对比二分查找与线性查找的效率差异,展示了二分查找在大数据量下的优势,同时也指出其必须依赖有序数组的局限性。最后总结了二分查找的两种实现方式(左闭右闭和左闭右开)及其区别。

2025-11-26 10:31:54 547 2

原创 C语言编程实战:每日一题 - day7

本文介绍了轮转数组问题的两种解法。第一种方法是逐个元素移动,时间复杂度为O(n^2);第二种采用三次反转法,通过整体反转和分组反转实现高效轮转,时间复杂度优化至O(n)。文中提供了两种方法的C语言实现代码,并分析了各自的优缺点。三次反转法因其线性时间复杂度和常量空间复杂度成为更优解。文章适合对算法优化感兴趣的读者参考。

2025-11-25 20:42:40 527 2

原创 C语言编程实战:每日一题 - day6

本文分享了解决"消失的数字"问题的三种思路:1)排序后遍历查找缺失项,时间复杂度O(n log n);2)数学求和法,通过公式计算总和后减去数组元素,时间复杂度O(n)但可能溢出;3)位运算法,利用异或特性找出缺失数,时间复杂度O(n)且无溢出风险。三种方法各有优劣,其中位运算方案最为高效安全。

2025-11-24 21:34:39 523 1

原创 爆肝整理!C 语言贪吃蛇从框架到落地全解析,含加速 / 暂停 / 计分,直接抄作业

还在纠结 C 语言练手项目?这篇贪吃蛇实战教程帮你搞定!从框架搭建到功能落地,全程保姆级解析,用链表 + WinAPI 实现经典玩法,还解锁加速、减速、暂停、计分等进阶功能无需复杂基础,跟着步骤就能复刻:先搭欢迎界面与游戏地图,再实现蛇身初始化、食物随机生成,最后完成移动、碰撞检测与资源回收。代码注释详细,关键逻辑拆解清晰,小白也能快速掌握控制台编程、链表操作核心技巧内附源码,直接可拿

2025-11-23 14:47:34 921 32

原创 WinAPI 极简教程:超简单的 Windows 接口入门

本文介绍了Windows API中控制台程序的相关函数,包括调整控制台窗口大小和标题的mode和title命令,获取标准设备句柄的GetStdHandle()函数,以及控制光标属性和位置的GetConsoleCursorInfo()、SetConsoleCursorInfo()和SetConsoleCursorPosition()函数。通过COORD结构体可精确定位屏幕坐标,实现文本输出的灵活控制。这些函数为开发贪吃蛇等控制台小游戏奠定了基础。

2025-11-22 10:15:55 888 29

原创 数据结构:手把手教你写 C 语言双向循环链表(内含分模块功能函数实现)

本文介绍了双向链表的实现方法,重点讲解了带头双向循环链表的数据结构设计及各功能接口的实现。通过List.h文件定义了链表节点结构体和操作接口,List.c文件具体实现了初始化、节点创建、插入删除等核心功能。关键技术包括哨兵位设计、指针四步调整法、内存管理和边界条件处理。相比单链表,双向链表通过前驱指针简化了操作,时间复杂度均为O(1)。代码采用模块化设计,通过类型抽象增强复用性,适合作为基础数据结构的学习案例。

2025-11-20 20:41:59 867 18

原创 C语言编程实战:云刷题 - day5

本文分享了关于链表的4个经典算法题解: 链表的中间节点:使用快慢指针法,快指针走两步、慢指针走一步,当快指针到达末尾时慢指针指向中间节点,时间复杂度O(n)。 反转链表:采用头插法,遍历原链表时将每个节点插入新链表头部,最终返回新链表的头节点,仅需一次遍历。 合并两个有序链表:通过哨兵节点简化操作,比较两链表节点值,较小者尾插到新链表,剩余节点直接链接,时间复杂度O(n+m)。 移除链表元素:遍历链表,跳过值等于目标值的节点,调整指针指向以删除节点,需处理头节点特殊情况。

2025-11-20 09:21:09 756 8

原创 C语言编程实战:大家一起云刷题 - day4

本文总结了C语言编程中的常见易错点和典型题目解析。通过7个精选案例,包括变量初始化陷阱、指针运算、两数之和算法、回文数判断、链表操作等,深入剖析了C语言的细节特性。特别指出全局变量默认初始化为0、有符号与无符号数比较的隐式转换、指针类型对内存操作的影响等易忽略问题,并提供了链表反转的标准实现方法。这些内容对于C语言初学者理解底层原理和避免常见错误具有重要参考价值。

2025-11-16 14:05:53 1036 29

原创 数据结构:为什么单链表总是学不透?核心原理与常见误区解析

单链表是一种通过指针将节点串联起来的线性数据结构,每个节点包含数据和指向下一节点的指针。本文结合代码实例,详细解析单链表的实现要点与常见错误。重点内容包括: 基础结构:节点由数据域和指针域组成,尾节点指针为NULL 创建要点:手动连接节点时需注意指针指向关系和边界条件 插入操作:必须使用二级指针修改头指针,避免值传递问题 删除陷阱:需处理空链表、单节点等特殊情况,防止内存泄漏 遍历技巧:正确设置循环条件确保完整访问所有节点。

2025-11-16 10:25:19 1081 23

原创 C语言编程实战:大家一起云刷题 - day3

本文分享了C语言编程中的5个经典算法题目及其解答代码,包括递归实现阶乘、打印整数每一位、无临时变量交换整数、统计二进制1的个数以及求两数二进制不同位数。同时详细讲解了右移操作符的两种类型:逻辑右移(高位补0,适用于无符号数)和算术右移(高位补符号位,保持有符号数符号不变)。文章还提供了输出二进制数奇偶位的小技巧,适合C语言初学者学习位运算和递归编程。配套的代码示例可直接运行测试。

2025-11-14 21:17:55 697 6

原创 实用的调试技巧

本文介绍了C语言编程调试的核心技巧和常见错误类型。主要内容包括:1)调试快捷键使用(F9断点、F5调试、F10/F11单步执行);2)监视窗口和内存窗口的操作方法;3)通过栈区内存布局分析数组越界问题;4)三类编程错误(编译、链接、运行时)的特征及解决方法。重点阐述了调试工具的实际应用和内存相关问题的分析思路,帮助开发者提高代码调试效率和问题定位能力。

2025-11-13 14:48:16 941 2

原创 C语言编程实战:大家一起云刷题 - day2

本文分享了多个C语言编程实例,包括: 喝汽水问题(20元最多能喝多少瓶汽水) 菱形图案打印 0-100000水仙花数查找 数列求和(a+aa+aaa...) 斐波那契数列计算(递归与迭代实现) 递归实现n的k次方 数字各位求和(递归与循环实现) 这些题目涵盖了算法设计、循环控制、递归应用等基础编程技能,适合初学者练习提高。部分题目提供了多种解法,便于对比学习。

2025-11-13 14:46:33 390

原创 C语言编程实战:大家一起云刷题 - day 1

本文分享7个C语言编程练习题及其代码实现,涵盖基础算法和逻辑训练。内容包括:计算带余除法(商和余数)、两数比较大小、三角形类型判断、寻找数组最大值、统计1-100中含9的数字、打印乘法口诀表、绘制X形图案。每个题目提供完整代码和详细注释,适合编程初学者练习基础语法和逻辑思维。作者还推荐了个人专栏《C语言从零开始到精通》等系列教程,强调通过实践提升编程能力。文中代码风格简洁,算法优化提示(如最大值查找的效率比较)体现了编程的实用性思考。

2025-11-12 13:46:28 366 3

原创 小游戏:拓展版扫雷

这款基于C语言开发的拓展版扫雷采用9×9标准棋盘与10颗随机地雷布局,通过双棋盘架构实现逻辑分离,运行稳定可靠。核心亮点包括智能自动扩展功能,点击无雷格子可递归探索周围安全区域并显示地雷数量;完整标记系统支持地雷标记(#)与取消标记,助力精准排雷。游戏提供扫雷、标记、取消标记、中途退出四大操作,胜负判定清晰:探索完所有非雷区域即胜利,踩雷则结束并展示全部雷位。代码模块化设计,支持通过宏定义调整难度,兼具趣味性与可扩展性,是C语言初学者巩固数组、函数、递归等知识点的优质实践案例。

2025-11-12 13:12:21 1353 31

原创 C语言容易被忽略的易错点(2)

本文主要介绍了C语言编程中几个易被忽略的要点:1)continue和break的区别,前者跳过当前循环剩余部分,后者直接终止整个循环;2)逗号表达式的运算规则是以最后一个表达式结果为值;3)while循环条件判断次数比循环体多一次;4)数组传参本质是指针传递;5)复合语句中变量的作用域限制;6)形参在函数调用时才分配内存;7)函数声明必须在使用前定义。这些知识点对避免常见编程错误具有重要指导意义。

2025-11-09 14:56:05 423 7

原创 小游戏:猜数字

本文介绍了C语言实现猜数字小游戏的开发过程。文章详细讲解了随机数生成相关的函数:rand()生成伪随机数,srand()初始化随机种子,time()获取时间戳作为动态种子。通过取模运算实现限定随机数范围(1-100)。游戏包含菜单界面和猜数逻辑,能提示玩家输入数字偏大或偏小。代码分为game.h和test.c两部分,采用模块化设计,包含输入验证功能。这个小游戏完整展示了随机数应用和基础逻辑的实现方法。

2025-11-08 12:58:45 807 1

原创 C语言容易忽略的小知识点(1)

本文分享了10个C语言编程中容易被忽略的小知识点,包括strlen函数特性、变量存储区域、浮点数输出格式、scanf与printf的占位符规则、else匹配原则、字符串比较限制、switch语句要求等。这些细节涉及语法规则、函数行为和编程技巧,对C语言初学者尤其重要。文章以简明的格式呈现技术要点,并配有代码示例说明,帮助开发者避免常见错误,提升代码质量。更多C语言教程可关注作者专栏。

2025-11-07 21:35:30 719

原创 数据结构之顺序表:一款优秀的顺序存储结构

本文介绍了顺序表的基本概念与实现方法。顺序表是一种线性存储结构,分为静态和动态两种类型。静态顺序表容量固定,而动态顺序表可扩容。文章详细讲解了动态顺序表的实现,包括初始化、销毁、尾插、头插、头删、尾删等核心操作,并提供了完整的C语言代码示例。最后通过测试验证了顺序表的功能。完整代码已上传至Gitee仓库。

2025-10-22 16:23:54 829 34

原创 C语言题目与练习解析:配套《柔性数组和动态内存易错点》

本文分析了C语言动态内存管理的四个常见错误案例。案例一因未正确传递指针导致内存泄漏;案例二返回局部数组地址,产生野指针;案例三虽运行正常但未释放内存,存在泄漏风险;案例四释放后未置空指针,导致非法访问。针对每个案例,文章提供了修正代码,强调及时释放内存、避免野指针的重要性,并推荐通过二级指针或返回值传递动态内存地址。

2025-10-22 16:23:22 932 28

原创 精通C语言(5.柔性数组和动态内存易错点)【什么?数组长度还能来回变化?!】

本文介绍了C语言动态内存管理中常见的错误及解决方法,包括对NULL指针解引用、越界访问、错误释放等典型问题,并提供了修正代码。同时通过4个经典案例引导读者思考内存管理隐患,最后讲解柔性数组的特性及使用方法,强调其与变长数组的区别,并给出动态分配和释放内存的示例代码。全文旨在帮助开发者规避内存管理错误,提升编程质量。

2025-10-12 17:45:35 1357 32

原创 精通C语言(4.四种动态内存有关函数)

本文介绍了C语言中动态内存管理的四个核心函数:malloc、free、calloc和realloc。动态内存管理解决了固定内存分配不灵活的问题,允许程序运行时根据需要调整内存大小。malloc用于开辟内存空间,free用于释放空间;calloc在开辟空间的同时会初始化为0,而realloc可调整已有空间的大小。文章通过代码示例演示了各函数的用法,并强调了使用free后置空指针的重要性,避免野指针问题。动态内存管理提升了程序的灵活性和内存使用效率,是C语言编程的关键技术之一。

2025-10-10 22:04:56 1502 24

原创 精通C语言(3. 自定义类型:联合体和枚举)

本文介绍了C语言中的两种自定义类型:联合体和枚举。联合体(共用体)的特点是所有成员共用同一块内存空间,大小至少为最大成员的大小,并遵循内存对齐规则,常用于节省空间。枚举用于定义一组常量,增强代码可读性和维护性,相比#define更严谨且支持调试。文章通过代码示例展示了联合体的内存分配、大小计算和实际应用(如礼品兑换单),以及枚举的声明、优点和使用场景(如判断机器字节序)。这两种类型在C语言编程中具有重要价值。

2025-10-09 22:17:38 1504 11

原创 精通C语言(2.结构体)(内含彩虹)

本文详细介绍了C语言结构体的基本概念和使用方法,包括结构体的声明、变量创建与初始化、自引用、成员访问及内存对齐规则。

2025-10-08 19:47:30 1448 12

原创 C语言题目与练习解析:配套《数据在内存中的存储》

本文是《数据在内存中的存储》的配套练习解析,通过多个代码示例深入探讨了数据在内存中的存储方式及其影响。主要内容包括:有符号/无符号字符型的整数提升规则、char类型边界值的特殊处理(如-128的存储)、浮点数IEEE 754标准下的存储格式解析,以及指针类型强制转换导致的数值解释差异。重点案例揭示了小端序存储特性、数组越界与无符号数循环溢出的原理,并通过浮点数和整型的相互转换实验,直观展示了内存数据解释方式对程序结果的直接影响。这些练习有助于理解底层数据存储机制对高级语言编程的关键影响。

2025-10-04 17:34:03 905 7

原创 C语言底层学习(4.数据在内存中的存储)

本文介绍了整数和浮点数在内存中的存储方式。整数以补码形式存储,并解释了大端小端字节序的概念及判断方法,通过多个代码示例演示了不同数据类型的存储特性。浮点数则遵循IEEE 754标准,详细说明了32位和64位浮点数的内存分配方式。文章包含丰富的代码练习和解析,帮助读者深入理解数据在内存中的存储机制。

2025-10-04 17:32:31 1280 13

原创 精通C语言(1.内存函数)

本文介绍了C语言中四个常用的内存操作函数:memcpy、memmove、memset和memcmp的使用方法与实现原理。memcpy用于内存拷贝,但存在重叠区域问题;memmove是memcpy的升级版,能处理重叠拷贝;memset用于内存填充;memcmp用于内存比较。文章通过代码示例详细演示了各函数的用法,并提供了memcpy和memmove的模拟实现,帮助读者深入理解这些底层函数的运作机制。这些函数在C语言编程中具有重要作用,掌握它们能提升内存操作效率。

2025-10-01 22:30:57 1519 12

原创 C语言入门知识点(13.指针篇结局与易混淆类型)

本文系统梳理了C语言中各类指针的复杂用法,包括基本指针类型、数组与指针组合、函数指针、多级指针等。通过示例代码展示了const指针、二维数组指针、指针数组、函数指针数组等特殊结构的声明方式,并总结出三条关键区分原则:运算符优先级顺序、变量名拆解法和结合场景记忆法。文章旨在帮助读者清晰辨别各类指针相关类型,避免实际编程中的混淆,适合有一定指针基础的C语言学习者巩固知识体系。

2025-09-28 23:35:26 672 4

原创 C语言入门知识点(12.回调函数与qsort函数的模拟与实现)

本文介绍了C语言中的回调函数和qsort函数的应用。首先通过简化计算器代码的案例,展示了回调函数如何通过函数指针实现不同功能的选择调用。接着详细解析了qsort函数的标准规范和使用方法,包括其参数含义和比较函数的设计要点。文章还通过模拟qsort功能的冒泡排序实现,帮助读者深入理解指针在函数回调中的应用。该内容适合希望提升C语言指针和函数式编程理解的初学者,提供了从基础概念到实际应用的完整学习路径。

2025-09-27 21:08:41 1299 14

原创 C语言底层学习(3.指针、函数与数组)(超详细)

本文深入探讨了C语言指针的高级应用,重点分析了三种特殊指针类型:字符指针、数组指针和函数指针。通过代码示例详细演示了字符指针的两种定义方式(指向字符变量和字符串常量),解析了数组指针与指针数组的语法区别,并创新性地推导出二维数组的指针表示法。在函数指针部分,不仅讲解了基本用法,还通过《C陷阱与缺陷》中的复杂代码展示了typedef简化函数指针声明的方法。全文贯穿"指针即地址"的核心思想,帮助读者理解指针与数组、函数的内在联系,适合有一定C语言基础的开发者进阶学习。

2025-09-25 19:12:32 1439 14

原创 C语言底层学习(2.指针与数组的关系与应用)(超详细)

本文探讨了C语言中指针与数组的关系及应用。主要内容包括: 数组名的本质是首元素地址,但在sizeof和&操作时例外; 指针可完全替代数组下标访问元素,arr[i]等价于*(arr+i); 数组传参实际传递的是首元素地址; 通过冒泡排序示例展示了指针在数组操作中的应用,并优化了排序效率; 简要提及二级指针概念。文章通过代码示例深入浅出地解析了指针与数组的密切关系及其实际应用技巧。

2025-09-21 23:23:14 1674 1

原创 C语言入门知识点(11.指针c篇)(超详细)

本文是关于C语言指针知识的补充,主要讲解了指针运算(包括指针±整数、指针-指针和指针关系运算)、野指针(包含悬垂指针)及其规避方法、assert断言的使用以及指针传参。文章通过代码示例详细说明了如何通过指针访问数组元素、计算字符串长度、避免野指针的产生,并介绍了assert断言在指针有效性检查中的应用。文章内容实用,适合C语言初学者学习指针相关知识。

2025-09-17 23:36:23 1027

原创 C语言入门知识点(10.指针b篇)(超详细)

本文继续探讨C语言指针的核心知识点,主要包括三个方面:1.指针变量类型的意义,通过示例展示不同指针类型解引用时修改的字节数差异,以及指针±整数运算时的步进单位由变量类型决定;2.void泛型指针的特性,可接收任意类型指针但无法进行指针运算;3.const修饰指针的四种情况,详细分析const位于左侧、右侧及两侧时的不同限制效果,帮助理解如何通过const保护指针本身或指针指向的数据。文章通过丰富代码示例和内存图示,生动呈现指针操作的关键细节。

2025-09-15 18:35:10 1203 1

原创 C语言入门知识点(9.指针a篇)(超详细)

本文主要介绍了C语言中指针的基本概念和使用方法。文章首先解释了指针的本质是"储存数据的地址名称",并通过类比快递货架和编号说明内存单元及其地址的概念。然后详细讲解了取地址操作符(&)和指针变量的定义,以及如何使用解引用操作符(*)访问指针指向的数据。文章还通过实验展示了不同平台下指针变量的大小差异,并分析了指针类型对内存操作的影响。最后通过两段代码对比,说明了指针类型在解引用时对内存操作范围的决定作用。全文用通俗易懂的语言和丰富的图示,帮助读者理解指针这一重要概念。

2025-09-13 12:18:43 997 2

原创 C语言底层学习(1.二进制与原、反、补码)(超详细)

本文介绍了计算机中的二进制与进制转换、原码/反码/补码的概念。主要内容包括:1)二进制与十进制的互换方法,整数部分除2取余逆序排列,小数部分乘2取整顺序排列;2)二进制与八/十六进制的转换规则;3)原码、反码、补码的定义及转换方法;4)计算机采用补码的原因,主要是为了解决负数运算的问题,通过补码可以将减法转化为加法运算。文章通过具体例子详细说明了这些底层计算原理。

2025-09-05 23:07:53 982

原创 C语言入门知识点(8.递归)(超详细)

本文介绍了C语言中函数递归的概念与应用。递归是函数通过调用自身不断缩小问题规模直到满足终止条件的编程技巧。文章通过阶乘计算和逐位打印数字两个例子,展示了递归的具体实现方式及其核心思想。同时指出递归可能导致的栈溢出问题,并以斐波那契数列为例对比了递归与迭代方法的优缺点,建议在计算复杂度较高时采用迭代方法。全文内容简明扼要,适合初学者理解递归的基本原理和使用场景。

2025-08-30 11:58:43 305

空空如也

空空如也

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

TA关注的人

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