自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 链表题型核心总结

题目要求:建立一个带头结点的单向链表,链表中每个结点包含整型数据域和指针域,结点的数据域值依次从键盘输入(以 0 表示输入结束且 0 不存储在链表中),按指定格式输出链表的数值(提示语 + 数值行,严格控制空格 / 换行)。题目要求:输入若干个学生的信息(学号、姓名、成绩),当输入学号为 0 时结束,用单向链表组织这些学生信息后,再按顺序输出。// 删除中间/尾节点。核心场景:带头节点链表构建、输入终止判断(0)、严格格式输出(空格 / 换行 / 提示语)。// 题目1需扩展为学号/姓名/成绩。

2025-12-18 14:29:19 735

原创 输入 3 个字符串按从小到大排序(函数 + 指针)自我总结

扩展性思考:若需排序更多字符串,可将指针数组改为动态分配(char **strs = (char **)malloc(n * sizeof(char *))),同时优化排序算法(如快速排序)。指针操作:通过字符指针数组存储 3 个字符串的地址,排序时直接操作指针地址(无需移动字符串本身,效率更高),函数参数需传递指针数组的地址或指针本身。解决:指针数组的参数应写为char *arr[]或char **ptr(二级指针),因为strs(指针数组名)的类型是char **。

2025-12-15 10:31:40 247

原创 10 个数逆序排序(指针实现)编程题自我总结

明确了数组名与指针的等价性:动态数组int* shuzu = new int[10]中,shuzu本质是指向数组首元素的指针,shuzu[i]与*(shuzu + i)完全等价,本次通过指针算术运算*(p + i)和*(p + 9 - i)实现对称位置元素交换,验证了指针操作数组的灵活性;未做输入合法性校验:题目要求输入整数范围1≤n≤10000,代码未校验输入值是否符合范围,若输入非法值(如 0、负数、超过 10000 的数),程序仍会处理,不符合工业级代码要求;二、存在的问题:代码实现中的待优化点。

2025-12-10 13:58:20 326

原创 回文字符串判断编程题自我总结

char* cp指向字符串的字符数组,访问字符可直接用*(cp + i)或cp[i],这也是 C/C++ 中处理字符串字符的常规方式,更贴合 “指针操作字符” 的考点要求。输入方式的选择:cin >> c仅能读取无空格的字符串,且会跳过空输入,而getline(cin, c)可读取整行(包括空字符串、带空格的字符串),需根据题目输入要求选择;先明确函数接口(返回值类型、参数类型、函数名)、输入输出格式、核心考点(如本题的char*指针操作),再动手编码,避免 “功能正确但不符合要求” 的问题;

2025-12-10 13:56:22 388

原创 输出学生成绩使用指针

输入处理与动态内存分配:先读取学生数量 N,再通过new关键字动态分配能存储 N 个double类型成绩的数组 —— 动态分配的优势在于适配运行时输入的 N,避免静态数组固定长度导致的内存浪费或越界问题;,漏写[]仅释放首个元素内存,会导致内存泄漏;初始化最值为数组首个元素(避免固定初始值导致的逻辑错误,如数组全为负数时初始最大值设 0 的问题),遍历过程中逐次比较更新最大值和最小值;最值初始化:必须以数组第一个元素为初始值,而非固定值(如 0),否则当成绩全为负数 / 大于 0 的数时,最值计算会出错;

2025-12-08 21:01:38 277 1

原创 利用指针返回多个函数值

最值计算:max_min()函数是核心,需接收存储整数的数组和数组长度n作为参数,通过遍历数组完成最值求解 —— 关键是合理初始化最值(如以数组第一个元素为初始最值,而非固定值 0,避免数组全为负数 / 正数时计算错误),再逐个比较更新最大值和最小值;错误规避要点:最易出错的点是最值初始化 —— 若直接将最大值初始化为 0、最小值初始化为 0,当数组全为负数(如n=3,数组为-5、-2、-8)时,最大值会错误计算为 0;全为正数时最小值错误计算为 0,因此必须以数组首个元素为初始值,再遍历比较;

2025-12-08 20:53:33 266

原创 最大公约数递归核心思路总结

递归求解最大公约数的核心是依托辗转相除法的递推关系,通过 “取余缩小问题规模 + 终止条件返回结果” 实现。该方法高效、逻辑清晰,能完美适配题目输入范围,且无需复杂的边界处理,是递归思想在数论问题中的典型应用。

2025-12-07 14:53:47 147

原创 斐波那契数列的递归核心思路总结

递归深度控制:n<70 虽未超出常规递归栈深度,但递归求解斐波那契存在大量重复计算(如求第 5 项时会重复计算第 3 项、第 2 项等),不过题目仅要求递归实现,因此优先保证逻辑符合递归思想;回溯计算:第 3 项 = 1+1=2 → 第 4 项 = 2+1=3 → 第 5 项 = 3+2=5,最终返回结果 5。递推关系:当 n > 2 时,第 n 项 = 第 n-1 项 + 第 n-2 项,即通过递归调用自身求解前两项再求和。求第 3 项 → 需先求第 2 项 + 第 1 项;

2025-12-07 14:52:45 126

原创 指针做为函数参数自我总结

而指针作为参数时,传递的是变量的地址(实参是&a、&b,形参pa、pb接收地址),函数内通过解引用操作*pa、*pb能直接修改实参对应的内存值,这是指针作为参数实现 "跨函数修改变量" 的核心逻辑。,只是将pb存储的地址赋值给pa,并未修改地址指向的变量值,主函数中a、b的值不会变化,这是混淆 "指针变量本身" 和 "指针指向的值" 的典型错误。补充的核心代码逻辑:和之前直接交换的思路一致,需借助临时变量完成值交换,关键是操作*pa和*pb(地址指向的内存值),而非pa和pb本身(地址)。

2025-12-06 12:08:41 354

原创 指针与地址自我总结

地址是变量的 "内存门牌号":程序中定义的变量(如int a)会在内存中占据一块存储空间,&a就是获取这块空间的地址(即内存编号),这是指针操作的基础。指针交换:操作的是变量的地址指向的内存值,即使变量名不可见(比如函数传参时),只要拿到地址就能修改变量值,这也是指针在函数传参中实现 "值交换" 的关键(比如后续学习函数传指针交换变量,核心逻辑和此处一致)。指针定义时*的位置:int *pa中*是修饰pa,表示pa是指针,而非int*是一种类型(书写时int* pa也可,但理解上要明确指针变量的本质);

2025-12-06 12:07:43 232

原创 字符串忽略大小写与空格匹配问题解题自我总结

解决本题的关键在于 “两步预处理 + 严格比对”:首先通过过滤空格、统一大小写完成字符串标准化,再对标准化后的字符串逐字符比对。解题时需重点规避空格处理不彻底、大小写转换遗漏、输入读取不完整等细节错误,同时严格遵循输出格式要求。这类问题的核心不是复杂算法,而是对规则的精准理解和细节的严谨处理,体现了 “细节决定正确性” 的编程原则。

2025-12-05 09:22:25 566

原创 汉诺塔问题解题自我总结

解决汉诺塔问题的核心是 “抓住递归的本质、把控输入输出细节”:递归逻辑保证步骤的正确性,格式细节保证结果能被正确判定。在实际解题中,需先理清递归的三层逻辑(移 n-1、移最大、移 n-1),再严格匹配题目输入输出要求,同时规避参数混淆、格式错误等常见问题,即可高效解决此类问题。

2025-12-05 09:21:17 306

原创 二分搜索编程题自我总结

终止条件的必然性:理解 “left>right” 是 “目标值不存在” 的唯一判定标准 —— 无论目标值比序列所有元素大(如在示例序列中搜索 50,最终left=n+1、right=n),还是比所有元素小(如搜索 1,最终left=1、right=0),都会触发该条件,无需额外判断。抽象思维的拓展不足:仅局限于题目中的 “升序序列、位置从 1 开始” 的场景,若题目改为 “降序序列” 或 “数组下标从 0 开始输出”,初期需重新梳理逻辑,说明对二分搜索核心逻辑的灵活应用能力仍需锻炼。

2025-12-04 17:59:52 488

原创 灯的开关问题编程题自我总结

【代码】灯的开关问题编程题自我总结。

2025-12-04 17:58:28 632

原创 冒泡排序编程题自我总结

【代码】冒泡排序编程题自我总结。

2025-12-03 10:06:16 221

原创 选择排序编程题自我总结

【代码】选择排序编程题自我总结。

2025-12-03 10:05:08 256

原创 100~200 之间素数筛选与格式化输出编程题自我总结

编程能力的提升离不开基础题的积累,后续我会继续重视基础题的练习,同时主动学习更高效的算法,拓宽编程思路,提升解决复杂问题的能力。末尾换行的自然处理:由于 100~200 之间的素数总数是固定的(21 个),最后一行输出 5 个素数后,无需额外强制换行(print函数默认输出后换行),自然满足格式要求,体现了 “按需控制” 的输出思路。编程实现数学概念的落地:素数是抽象的数学概念,通过编程可以快速找出指定范围内的所有素数,并按要求展示结果,将抽象概念转化为具体的输出,加深了对数学知识的理解。

2025-12-02 15:24:56 470

原创 1000 以内各位数字和为 n 的正整数筛选编程题自我总结

最后对 1 取余得到 1,1//10=0,循环终止,求和 5+0+1=6。输入的合法性校验:题目虽未明确限制 n 的范围,但实际中 n 的取值有合理边界(1000 以内正整数的各位和最大为 9+9+9=27),因此我添加了对 n 的校验(如 n<1 或 n>27 时提示 “无符合条件的数”),避免了无效的循环计算。范围边界的精准把控:题目要求是 1000 以内的正整数,即num的范围是 1≤num≤999,在循环时无需考虑 0 和 1000 及以上的数,避免了无效计算,也让结果更符合题目要求。

2025-12-02 15:22:39 565

原创 调和级数找最小 n 编程题自我总结

这种 “贪心式” 的逐步验证,避免了复杂的数学推导,也能保证结果的最小性,适用于多数 “找最小满足条件值” 的编程题(如找最小的质数、最小的完全数等)。编程验证数学结论:调和级数的发散性是数学上的理论结论,而通过编程可以实际计算出满足Sₙ≥k的具体 n,将抽象的数学结论转化为具体的数值结果,加深了我对调和级数的理解。终止条件的精准设计:循环的终止条件直接对应问题的核心要求(sum_s ≥ k),这让我学会了将数学条件直接转化为编程的判断逻辑,减少中间环节的误差。

2025-12-01 10:35:38 337

原创 水仙花数思考

这让我意识到,编程题不仅是锻炼代码能力的载体,还能串联数学知识,后续会主动结合数学概念拓展编程思路,比如尝试编写寻找四位阿姆斯特朗数的程序。总之,这道看似简单的编程题,让我在基础语法、解题思路、编程思维三个层面都有了收获,也让我明白 “简单题目练基础,复杂题目练思维”,重视每一道基础题的练习,才能稳步提升编程能力。若跳过校验直接处理,不仅会出现逻辑错误(如 M>N 时循环无法执行),还可能让程序处理不符合要求的数值(如小于 100 的数),导致无意义的计算;同时加强整数运算的练习,减少细节错误。

2025-12-01 10:18:41 223

原创 初学C++的核心体会:从“跟着写”到“主动想”的转变

语法太陌生,for循环、数组、函数这些,光看文字记不住,跟着敲一遍,手指有了 “肌肉记忆”,报错了改一改,才真正明白 “分号不能漏”“变量要先定义”;搞不懂抽象概念:指针、类这些,跟着写代码也迷糊,只能自己查简单的例子,比如把指针比作 “抽屉钥匙”,再写个小代码测试,慢慢想通 “为什么要用指针”。不知道程序怎么跑起来,跟着写个 “两数相加”“遍历数组”,看到代码输出结果,才懂 “循环是一步步迭代”“数组下标从 0 开始”;预判结果:写循环前,先在脑子里过一遍 “循环几次”“变量怎么变”,减少报错。

2025-11-24 10:42:17 357

空空如也

空空如也

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

TA关注的人

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