- 博客(26)
- 收藏
- 关注
原创 C语言中链表的增删查改
本文系统讲解C语言链表的增删查改操作,通过定义节点结构体和封装函数实现尾插、头插、指定位置插入、按索引/值删除、查找与修改等功能。重点强调指针操作细节:如遍历终止条件、插入顺序、删除时先保存后释放内存等,确保链表完整性与内存安全。代码逻辑清晰,便于维护与扩展,体现链表动态灵活的优势。
2026-11-06 15:51:39
337
原创 结构体的初步认识
C 语言自带的类型(int、float、char 等)一次只能描述一个简单的数据。但现实中的事物往往由多种数据组成:一名学生有姓名(字符串)、学号(整数)、成绩(小数)。再比如图书馆的图书管理系统:存入一本书的数据包括书名、ISBN码、版本号、索引码等。如果用多个独立变量或多个数组分别存放,数据之间的"归属关系"需要靠下标人为维护,代码零散,也容易出错。结构体就是用来解决这个问题的:它把不同类型的数据封装成一个整体,作为一种自定义的数据类型来统一管理。
2026-10-27 17:48:22
208
原创 题解9:蓝桥杯新生挑战赛2(社团出游、迎新配送、讲义补印、社团合影、彩带拆除)
【代码】题解9:蓝桥杯新生挑战赛2(社团出游、迎新配送、讲义补印、社团合影、彩带拆除)
2026-10-22 14:42:07
15
原创 函数在动态数组中的使用
本文通过重构动态数组代码,将原本臃肿的main函数拆分为多个独立函数,实现增、删、查、改、打印等操作的模块化。通过统一参数设计(传址修改size/len,返回新地址),解决重复代码、维护困难等问题。核心在于“函数即零件”理念:扩容用return返回新地址,避免二级指针;插入从后往前移防止覆盖;删除边界判断严谨。重构后main仅作调度,代码清晰可读、可复用、易测试,显著提升可维护性。
2026-10-20 19:14:26
154
原创 c语言中数组综合运用(增删查插换)
数组:连续内存,查改快适合数量固定、主要是取数据的场景。动态数组:用指针当句柄 + size/len 两个计数器 + 翻倍扩容 + 堆内存管理把数组包装成能自动变长的容器,代价是扩容搬移和必须自己管理内存。指针在这里的作用:数组名改不了、堆内存没有名字,而扩容意味着数据搬家,所以必须用一个可以重新指向的句柄 arrP 来始终代表当前数组。数据搬家,句柄不变——上层代码一行都不用改。
2026-10-11 21:47:03
64
原创 题解8: 统计单词数(C 语言实现)
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。输入格式共 2 行。第 1 行为一个字符串,其中只含字母,表示给定单词;
2026-10-10 21:44:49
145
原创 小白上手c语言笔记
本文为C语言入门小白整理的实用笔记,涵盖基础语法、数组操作及三种排序算法。内容包括头文件引入、主函数结构、变量定义与输入输出(如scanf、printf)、数组定义与遍历、sizeof使用,以及冒泡、选择、插入排序的实现。通过实例演示字符串读取与长度统计,掌握fgets与strlen等常用函数。适合零基础者快速上手C语言核心概念与编程实践。
2026-10-05 21:36:34
195
原创 扫雷游戏创作实践
在学习完监听器、类的继承、Swing面板绘制和事件的监听等内容后,我们可以完成扫雷游戏的制作这个项目来运用学过的这些知识。扫雷游戏和之前的五子棋游戏有相同点和不同点,相同点在于都运用了相同的绘制棋盘线思路和UI设计思路。不同点是扫雷游戏运用了更多的数组来存储有关数据,“数据”和“玩家能看到的东西”是两回事,这一点比五子棋游戏更有意思。扫雷的核心趣味在于隐藏:棋盘上的雷和周围的数字其实在启动游戏的那一刻就全部确定了,而玩家看到的是一片空白,必须一格一格点开覆盖的格子去推理,并用棋子标记。
2026-09-27 14:38:50
311
原创 题解7:蓝桥 饮料换购、约瑟夫环
本文题解涵盖蓝桥杯两道经典题目:饮料换购与约瑟夫环。饮料换购问题通过模拟瓶盖兑换过程,利用循环累计可喝饮料总数,核心为每3个瓶盖换1瓶,更新剩余瓶盖与新增瓶盖。约瑟夫环采用递推法,从1人情况反推至n人,公式为position = (position + k) % i,最终输出幸存者编号。两题均体现数学建模与算法优化思想。
2026-09-18 19:42:40
76
原创 动态数组的实现步骤
由此带来三个问题:容量写固定了。写 10 就只能放 10 个,第 11 个直接 ArrayIndexOutOfBoundsException(数组越界)。arr.length 是容量,不是元素个数。你无法用 length 表达"我放进去了 3 个"。扩容只能手工做。新建大数组 + 逐个拷贝,每次用都得重写一遍。而动态数组要做的事,就是把这三点全部封装起来:对外表现得像一个"想放多少放多少"的列表,对内仍然用一个定长数组来存。概念 含义 读取方式。
2026-09-15 12:41:48
190
原创 五子棋游戏的创作
本次利用Swing完成五子棋项目,实现落子、判赢、认输、重置等基础功能,积累了Java图形化编程经验。项目遵循Swing的开发思想,事件负责修改数据,paint方法完成界面绘制,通过 repaint() 实现界面刷新。使用两套数组分别存储棋盘逻辑和棋子对象,落子时同步更新,保证界面和游戏逻辑统一。通过成员变量管理游戏状态,区分对局、认输等不同场景,游戏结束拦截鼠标输入,避免非法操作。业务判断尽量读取原始数据,减少对临时变量的依赖。同时注意代码细节,重置游戏时完整复原全部状态,消除旧数据残留。
2026-08-27 20:40:25
214
原创 五子棋游戏中的二维数组运用
在// 定义二维数组保存棋子颜色设计要点LINE=15:棋盘为15×15网格0表示空位,1表示黑棋,2表示白棋使用chessY作为行索引,chessX作为列索引(注意坐标转换)状态存储:简洁高效地存储棋盘状态胜负判断:通过遍历数组实现高效的连子检测通过本文的分析,我们可以看到二维数组不仅是数据存储工具,更是算法实现的基础。合理的数组设计和边界处理是保证游戏逻辑正确的关键。深入理解二维数组在五子棋中的应用,我们可以更好地掌握这种数据结构在游戏开发和其他领域的实际应用。
2026-08-18 11:34:23
196
原创 图形重绘的实现
该项目基于Java Swing实现交互式绘图功能,通过自定义Shapes类封装各图形参数,将图形存入数组并实现重绘持久化。开发难点在于理解方法的传参规则即实参依靠顺序与形参匹配,不受变量名的影响。多边形、曲线及橡皮擦的绘制采用逐段生成线段的方法,将顺时鼠标坐标保存到对象内部,避免全局变量覆盖而造成线条错乱。本次的实践结合了之前所学的诸多知识,例如数组、类的继承。深刻认识到区分变量作用域的重要性。后续编写图形程序时,需要在必要的地方做好操作注释,理清代码思维链路,减少逻辑的误解。
2026-08-11 21:29:39
239
原创 对类的继承的理解
类的继承是面向对象编程的核心特性之一,它允许一个子类(派生类)基于一个现有类(父类/基类)来定义,自动获得父类的属性和方法,并可根据需要扩展或重写。继承建立了“is‑a”关系:如果 B 继承自 A,那么 B 的对象就是一个 A。比如Dog继承自Animal,那么Dog就是一个Animal。继承是面向对象编程的基石,通过“is‑a”关系实现代码复用与功能扩展。设计时应优先考虑接口和组合,只在确实存在父子关系时使用继承。理解继承与多态、封装之间的协同关系,才能真正写出结构清晰、易于维护的高质量面向对象代码。
2026-08-05 22:07:38
202
原创 题解2(水桶问题、寻找数组最小值问题、统计前面小于当前元素的个数问题)
几何计算:掌握圆柱体积公式 V = πr²h单位换算:理解升与毫升的换算关系(1升 = 1000毫升)数值处理:学习向上取整的实际应用场景精度控制:了解浮点数计算与整数除法的区别数组操作:掌握数组的声明、初始化和遍历最小值查找:理解遍历比较的基本算法边界处理:学会正确处理各种边界情况输入输出:熟练使用 Scanner 进行标准输入输出双重循环:掌握嵌套循环的使用场景和技巧数组遍历:熟练使用数组索引进行前后元素的访问条件统计:学习如何根据条件进行计数操作输出格式控制。
2026-08-04 14:33:56
213
原创 题解1(字母变换、再发肥宅快乐水、计算三角形面积)
一个三角形的三边长分别是 a、b、c,那么它的面积为 根号下[p(p-a)(p−b)(p−c)],其中 p=1/2(a+b+c)。输入这三个数字,计算三角形的面积,四舍五入精确到 1 位小数。题目:现在有 t 毫升肥宅快乐水,要均分给 n 名同学。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 位),以及一共需要多少个杯子。题目:输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。对于所有数据,0≤t≤10000 且小数点后不超过 3 位,1≤n≤1000。
2026-08-04 12:30:53
207
原创 数组的了解与应用
数组是一组存放相同数据类型元素的有序集合,在内存中连续存放。其特点是:1.长度固定,且长度固定后无法更改。2.通过下标调用数组中的数据时,Java中下标从0开始。3.数组最大的下标=长度-1(length-1),超出范围会报出越界错误(ArrayLndexOutOfBoundsException)。数组是批量存储同类型数据的基础结构,通过学习并掌握了数组的定义、数组中数据的调用、数组遍历和冒泡排序,并加以实战运用。
2026-07-25 17:55:17
235
原创 绘图工具设计实践
通过本次绘图工具设计的实践,我理解了Swing图形界面的开发逻辑,进一步掌握接口、监听器、鼠标事件、按钮事件的使用方法;不断地将思维延伸,从绘制直线、矩形、椭圆、等腰三角形开始,到一步步探索实现普通三角形、多边形以及曲线的绘制;并学会使用布尔flag标记控制程序的运行流程,不依赖复杂的语法。同时理解了如何在系统未报错的情况下通过运行输出语句找出代码中的问题、如何重新设置代码格式,使得大括号有序对应,代码更具逻辑性。
2026-07-20 23:48:52
182
原创 关于监听器的使用
1.这一次的内容是对前几次内容综合的延伸,将进入运行的登录界面、输入账号或密码、点击登录按钮后无后续页面显示的问题解决了。2.在该次内容中,进一步展现了面向对象思想在编程中的重要运用:Login负责构建可视化界面,BottonListener则专门处理按钮点击的事件,两类各司其职,条理清晰。3.这是第一次引入“接口”这一概念,只要实现该接口并重写对应方法,Java便可以识别点击事件。
2026-07-10 22:58:16
170
原创 Java图形化编程实战笔记
Java中通过Swing工具包实现桌面窗口的开发,并通过创建窗口、标签、文本输入框、密码栏账号栏、按钮及载入图片等组件,搭配流动布局管理器完成页面的排布,设计出带操作界面的应用程序。实战的项目是:创建并编写登录界面Login类,实现带背景图片、密码框账号框、登录按钮的可视化界面。
2026-07-09 14:15:25
234
原创 新手小白对于类与对象的理解
***/System.out.println("这是我的电脑,名称是"+name+"售价"+op+","+"由于促销,减去"+pri+"现价"+price);
2026-07-04 15:20:13
64
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅