- 博客(9)
- 收藏
- 关注
原创 斐波那契数列的表示——C语言
宏定义N:使用#define定义常量N=20,表示需要计算和输出20项优点:需要修改项数时只需改这一处数组声明:创建长度为N的long类型数组fib使用long类型防止大数溢出(虽然前20项不会溢出)初始化{1, 1}显式设置前两项剩余元素自动初始化为0(但后续会被覆盖)
2025-06-28 16:31:35
744
原创 用指针数组实现字符串排序
指针数组是C语言中存储指针的数组,每个元素都是内存地址。常见错误包括:1)未初始化指针导致未定义行为;2)错误交换指针而非字符串内容;3)所有指针指向同一内存导致数据覆盖。正确使用需要:1)明确定义数据类型*数组名[长度];2)注意与数组指针(char(*ptr)[N])的区别;3)排序时应交换指针地址而非内容。典型应用场景包括字符串排序,通过指针数组调整指向顺序而非移动实际数据可提高效率。使用时需确保每个指针指向有效内存区域。
2025-05-27 00:11:53
1009
1
原创 C语言的标准输入输出总结
本文总结了C语言中常见输入输出函数的使用要点。scanf()读取字符串时会跳过前导空白,而%c会读取所有字符;printf()遇到\0会终止输出。getchar()逐个读取字符(含空格),常用于清理输入缓冲区。fgets()安全读取含空格的字符串并自动添加\0,需注意换行符处理;puts()输出字符串并自动换行。特别强调已被废弃的gets()存在缓冲区溢出风险,绝对不要使用。文章通过代码示例演示了各函数的特性及常见问题解决方案,尤其对输入缓冲区的处理技巧进行了详细说明。
2025-05-24 23:00:33
956
原创 在递归中使用前置++ 后置++传参,可能出现的问题
注意,在前置++里面,++以后的str,会先保存在原本的栈帧,然后再复制拷贝到新栈帧,也就是调用函数所产生的新栈帧。同时,tmp先不填充进去的时候,我们还要在每次递归的时候,对于f—e—d,依次填充为\0,来保证我们求的长度准确。,用来存放它里面的元素,所以每次调用函数的时候,tmp,保存在不同的位置,他们之间并不会覆盖冲突。在第二次的时候,f—bcdea,我们并不是让b和a换位置,我们在求长度的时候,是要把a舍去的。注意,在str+1里面,每个str,本身的值不会变,只是会用str+1,来进行传参。
2025-02-12 22:28:46
607
原创 字符串逆序(递归实现)
答案并不会,我们每次调用函数,都会分别为它创建一个栈区,用来存放它里面的元素,所以每次调用函数的时候,tmp,保存在不同的位置,他们之间并不会覆盖冲突。同时,tmp先不填充进去的时候,我们还要在每次递归的时候,对于f—e—d,依次填充为\0,来保证我们求的长度准确。while循环,定义一个变量count,数组里面的元素,如果不是\0,就让count+1,最后返回count。逆序之后数组的内容变成:fedcba。在第二次的时候,f—bcdea,我们并不是让b和a换位置,我们在求长度的时候,是要把a舍去的。
2025-02-09 23:30:43
320
原创 C语言小游戏——猜数字
这个循环是一开始要直接进入的,让玩家一开始就可以选择,所以我们选用了do while循环,条件是input,同时,因为非零为真,零为假,所以玩家如果没有输入0,主动退出游戏的话,程序是不会结束的。并且我们的srand函数只能引用一次,因为如果我们一秒内猜测了两次数,此时srand函数种子值来不及变,就会导致伪随机数序列也是相同的,也就是每局游戏的数字都是相同的。就是每一次的随机数序列都是一样的,而且刚输出完序列中的第一个数,这个种子值就马上刷新为一个相同的数,也就导致了 每一次输出的随机数都是一样的。
2024-12-23 23:41:41
536
原创 给未来自己的一封信
后来,来了大学读了机械专业,学校没有生物专业,但又不想放弃自己曾经热爱的东西,就想转专业到计算机,想着以后可以从计算机跨考到生物信息学,想着搞交叉领域更能有所突破,不过,这一切真的道阻且长。不知道现在的你是否还坚持着当年的理想,记得中学阶段的你是很喜欢生物这个学科的,常常对某些小细节钻研半天,沉浸于这种发现问题,并且钻研半天后了解问题本质的成就感。对了,你还记得,你当初很想去的那所大学吗,哈哈,虽然18岁那年没有去成,所以有点遗憾,但我期望,你能在20出头的年纪去弥补你18岁那年留下的遗憾。
2024-11-23 22:26:13
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人