自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 stm32之DS18B20温度传感器+OLED显示+RTOS多任务执行(cubemx配置,使用hal库)

这次做了个小东西,主要分为三个部分,一部分是正确接收DS18B20传感器的数据,另一部分是将接收到的数据显示到OLED上,最后一部分是使用RTOS来多任务执行,一个任务是从DS18B20传感器接收到数据后传到消息队列中,另一个任务是从消息队列中读取数据然后显示到OLED上。我们将分别讲述三个部分提取码:bMGx。

2025-12-15 11:34:37 774

原创 stm32f103c8t6寄存器点灯法

今天我们来讲一下不用别人写好的库函数来点灯,我们需要用到的参考资料有stm32f103参考手册我先展示代码吧想要进行点灯,我们需要使能我们相关GPIO口的总线,然后配置端口的模式(输入还是输出),最后修改端口寄存器的值来实现高低电平的变化。

2025-11-16 21:32:47 438

原创 操作系统精髓与设计原理(只讲大概的,暂时完结,核心内容差不多就是这些了,详细的还是要看书)

本文概述了计算机系统和操作系统的核心概念。计算机系统由处理器、内存、I/O模块和系统总线构成,发展经历了微处理器革命,现代计算机普遍采用多核处理器和高速缓存技术以提升性能。指令执行分为取指和执行两阶段,中断机制优化了I/O效率。存储器采用层次结构平衡速度、容量与成本。 操作系统作为应用与硬件的接口,提供程序开发、运行、资源管理等服务,具有便利性、高效性和可扩展性。其发展历程反映了硬件升级、新功能需求和错误修正的演进。多处理器系统通过SMP架构实现高效并行处理,操作系统在资源管理、错误响应等方面发挥关键作用,

2025-05-27 16:51:47 1340

原创 算法基础(以acwing讲述顺序为主,讲的很简单(有点不清不楚),主要用作看完视频复习,大家还是去看视频好一点)

这是我从百度上面搜的定义算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间,空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。其实也就相当于我们用了多少的内存空间也就是执行我们这个算法所要花费的时间。

2025-04-16 22:18:22 1233

原创 电路(b站石群老师主讲,持续更新中...)

实际电路就是实际的元件接线,电路的模型是为了方便我们进行能量和信息的分析,把实际的元器件和把实际的电路按照电的属性抽象出来的理论模型通过研究电路模型得到的一些电路结论,这与实际元件关系不大,所以说为了方便我们进行研究,就把实际的电路可以抽象出电路的模型,我们只需要分析这个模型就可以掌握能量和信息这两个方面。

2025-04-15 22:07:13 542

原创 深入理解计算机操作系统(持续更新中...)

我们日常编程使用的语言,比如说c,c++,java都是高级语言,我们的机器不能直接理解这些语言,所以如果想让我们的机器运行我们用高级语言编写的程序那么程序的每一条语句都必须被其他程序转化为一系列的低级机器语言指令,然后这些指令按照一种称为可执行目标程序的格式打包好,并以二进制的形式存储起来。:接下来我分别讲一下这四个阶段,第一个阶段就是预处理阶段,这个阶段预处理根据以字符#开头的命令修改原始的C程序,修改完成后就得到了另一个C程序,通常以.i作为文件扩展名。我们的程序都是以字节序列的方式储存在文件中的。

2025-04-13 22:20:10 459

原创 计算机组成原理(哈工大,会持续更新)

计算机软硬件的概念计算机系统包含两个部分一个部分为硬件,另一个部分为软件硬件:硬件包括我们能直观看到的东西,也就是我们计算机的实体,比如说我们的cpu,显卡,内存条软件:由具有各类特殊功能的信息(程序)组成硬件通过软件来发挥作用,硬件通过每一条指令的有序执行来发挥其功能,所以说软件是计算机系统中非常重要的一部分。软件我们又可以将其分为两个部分,一部分为系统软件,一部分为应用软件。系统软件:用来管理整个计算机系统,比如说操作系统就是一个系统软件应用软件:根据我们的需要编制的各种程序。

2025-04-13 18:00:43 556

原创 数据结构之单链表和双链表(数组实现)

链表是一种很常见和常用的数据结构,本文只介绍单链表和双链表。链表我们一般使用结构体进行实现,在学习的时候我们也是使用结构体来实现链表。但是我们可以使用数组来实现,我先介绍数组和结构体的优缺点,再进行代码的实现。

2025-03-03 17:23:39 588

原创 洛谷--前缀统计c语言

所以我们才要让p=son[p][u]。前面讲的可能很乱,我再总结一下原因,不管我们输入几个字符,cnt[0]永远是0,因为就算我们一开始只输入一个字符,这时son[p][u]=++idx,这时son[p][u]已经为1了(idx一开始初始化为0),那么我们再让p=son[p][u],那么p这时为1,最后结束循环,cnt[p],也就是cnt[1]++,所以cnt[0]永远是0,那么我们询问操作时,一开始p=0,根本不需要管cnt[0],直接让p=son[p][u]就可以了。

2024-12-31 22:12:11 454

原创 我的创作纪念日

收获挺大的,主要是在写文章的时候,对代码的理解加深了,比如某个算法对应的思想一开始不理解,只能去临摹别人的算法,后来通过写文章来讲解题目的思路,一些不懂的地方也逐渐弄懂了。平常有空会进行创作,但是大部分时间还是学东西,写了算法题目后,有空会进行创作来讲解这题的思路和思想。这是我第一个创作时写的代码,当时也困扰了我比较久,后面还是去搜了一些别人的代码才写出来的。//这里我们默认边长小于等于50。我当初写文章只是为了加深一下我对代码的理解,同时也将自己的理解分享出去。

2024-12-30 18:45:33 467

原创 切蛋糕c语言(附解析)

这题为什么要用到单调队列算法,我们稍微分析一下就可以知道,我们要找到某个子区间和的最大值,而每个子区间我们可以用a数组中某两个下标所储存的值相减,比如我们要计算[2,3]这个区间,那么我们只需要让a[3]-a[1]就可以了,就可以知道这个子区间和的值,既然要找最大值,那么我们需要让被减数越大越好,减数越小越好,我们可以用单调队列找到我们前缀和数组里某一个区间内的最小值。这个代码主要用到了两个算法,一个是前缀和,一个是单调队列,在这里我不过多讲述,主要讲一下这一题的思想。

2024-12-30 18:32:08 558

原创 力扣第四十二题 接雨水(困难难度,c语言附着解析)

可能会有人疑惑,如果出现一直单调递增或递减的高度那会怎么样,如果是单调递增的高度,那我们的lmax就一直是当下我们所指向的数组的值,这时lmax-height[l++]就为0了,sum的值不会变,只有当不是单调递增或者递减时我们这时才会进行积水,sum这时才会相加。这个代码是双指针算法,我参考了别人的解法,大致的思路如下,我们先使用两个指针,分别从数组开始和末尾开始遍历,并且我们使用了两个变量,分别记录当前我们遍历到的左边和右边遇到的最大高度。

2024-12-25 18:24:14 401

原创 c语言不知道数据个数时怎么进行输入(附解析)

不知道数据元素个数时怎么进行输入

2024-10-30 23:47:04 2218 1

原创 c语言--森林排查顺序

第二步我们排查下方,这里使用n-1是因为第一行最右边那个也包括在下方,比如第一行是1 2 3,那么3就不需要再次排查。第四步我们排查上方,使用n-2是因为排查左方的时候已经排查过一个,排查右方的时候也排查过一个,比如。当最外围已经排查五个后,那么第二层就只需要排查三个,这里是17 18 19。第三步我们排查左方,原理跟排查右方相差无几,注意这里任然需要使用n-1.当这一切做好之后,我们就只需要打印数组里的值就可以了。题目:我们需要从森林的外围逐渐排查到中心。在这里,1和7不需要再次排查。

2024-08-30 22:38:55 592

原创 c语言实现五子棋代码(有简单的人机对战,附解析)

前段时间,我和我的小伙伴一起做了关于五子棋的小的团队项目,我将其中一些非核心的内容简化了一下,保留了核心的内容,今天我就和你们来分享一下我们所做小项目。因为我们定义了比较多的函数,所以我将其每个函数都单独讲解,在这个项目中,我做了两个人机对战,一个非常简单的,一个简单的。(声明函数就不展示了)我们先定义两个全局变量。其中flag变量用来表示这个回合谁落子,偶数表示黑方落子,基数表示白方落子。数组中的数组代表子的颜色,2表示黑子,1表示白字。用来清屏。

2024-08-29 16:07:10 3220 6

原创 c语言--矩阵转换(附解析)

1][0] , [1][1] , [1][2] , [1][3] 被转换为 [0][2] , [1][2] , [2][2] , [3][2] ,[3][0] , [3][1] , [3][2] , [3][3] 被转换为 [0][0] , [1][0] , [2][0] , [3][0] ,根据题目分析, [0][0] , [0][1] , [0][2] , [0][3] 被转换为 [0][3] , [1][3] , [2][3] , [3][3] ,printf("请输入整数");

2024-08-28 21:37:10 820

原创 c语言与素数相关的题目

在这里,我们首先进行判断该数是否为素数,如果是素数的话就进行打印,如果是素数,就将变量 i 减去1并且打印 i 的值,进行下一次循环(直到 i 等于1)。因为根据素数的定义(除了1和它本身以外不再有其他因数的自然数),所以我们这里使用k-2.如果不是素数,那么就将 i 减去1并直接进入下一次循环(直到 i 等于1)。(新手写作,如有解释不清楚,请谅解,也请各位大佬指出哪里的解释有问题)设计一个程序, 输入 N, 输出 0~N 之间的所有素数。printf("请输入一个整数");

2024-08-28 12:54:29 474

原创 c语言--兔子繁殖(附解析)

我们先定义一个一维数组并将其初始化,使 i [1]=1,i [2]=1,这里就表示第一和第二个月的兔子总数,这里用n-2是因为我们减去了前两个月的兔子总数,直接开始计算第三个月的兔子数量,之后将每个月的兔子总数用数组保存起来,用sum表示最后我们想要得到的兔子总数。一对刚出生的兔子, 兔子出生第 3 月开始每月都会生一对小兔子, 小兔子出生后同样第 3 月开。(新手写作,如有解释不清楚,请谅解,也请各位大佬指出哪里的解释有问题)始也会每月生一对兔子,如果兔子不死 n 月后家里会有多少对兔子。

2024-08-27 21:17:25 1293 2

原创 c语言实现九九乘法表(附解析)

在这里我们用x变量表示每行式子的个数,比如x等于2就表示这一行有2个式子。

2024-08-27 20:49:04 460

原创 c语言实现杨辉三角(附解析)

因为C(2,5)其实相当于(4*3)/(2*1),所以我们就不断累乘上面的数(也就是变量q),同时也不断累成下面的数(也就是变量w),之后我们将其相除,最后打印就可以得到我们想要的数字了。再根据我们高中的有关排列组合的数学知识,当我们输入4时,第四行其实每个数是(C(0,4)(上面是0,下面是4,后面以此类推),C(1,4),C(2,4),C(3,4),C(4,4)。(新手写作,如有解释不清楚,请谅解,也请各位大佬指出哪里的解释有问题)有了这个公式,那么我们就可以进行设计了。接下来进行代码的分析。

2024-08-26 18:50:31 987

原创 c语言实现打分系统(包括去掉最高分和最低分,附解析)

我们这里进行比较的思路是先固定数组的一个元素(可能用固定这个词表述不当),然后让这个固定的元素与数组内的其它元素进行比较,比如arr[k][0]会与arr[k][1],[k][2]等等元素进行比较(当然还包括它本身)。有关c变量的那个 if 语句是用来寻找最小值的,有关n变量的 if 语句是用来寻找最大值的。第一部分我们创建一个二维数组和一个一维数组,二维数组用来存储选手的每个选手的分数,一维数组用来存储选手的平均分。我们先输入同学的人数,评委的人数和选手的得分。最后让之前定义的一维数组储存我们的平均值。

2024-08-26 17:09:31 1320

原创 用C 语言实现斐波那契数列(附解析,非递归)

在这里我们分为两种情况,一种情况是输入1的情况,那么我们只打印一个数并且退出程序,否则输入两个数以上(包含两个数)那么我们就先打印数列的前两项。第二步生成n+1项,等式左边的m是新生成的项(也就是n+1项),右边的m是第n项。第三步我们将n-1项赋值给变量k(因为新生成了项数,所以这时候的i表示n-1项)(新手写作,如有解释不清楚,请谅解,也请各位大佬指出哪里的解释有问题)之后我们进入循环,这里使用n-2是因为我们已经打印了前两项。进入循环后,第一步我们先用一个中间变量i保存数列n项。

2024-08-25 13:24:42 747

原创 c语言判断素数(附解析)

之后我们用一个for循环,该循环用来判断该数能否被除了1和本身之外的数整除。如果能,就直接打印该数不是素数然后退出程序。这里用i-2是因为将1和该数本身去掉。如果k等于i-2那么就可以判断该数为素数。素数的定义:除了1和本身之外,没有其他的因数的数,即不能被其他数整除。printf("该数不是素数");第一步先判断这个数是不是大于2,如果不大于2就直接退出程序。printf("输入的数字错误");printf("该数是素数");如果不能,那么就让变量k加1,之后继续该循环。第二部分判断该数是否为素数。

2024-08-25 12:14:13 368

原创 c语言菱形代码(附解析)

这里将b变量减1的目的是为了不重复打印,比如说我们选择打印3边长的菱形,那么第三行就是五个星号,如果不将b减去1,那么第四行也会打印五个星号,所以我们在这里将b减去1。这里用n-1是因为我们要确保i[0]到i[n-2]不能有多出来的空位,就比如如果我们不用n-1,那么i[0]就可能一直为0,从而可能导致我们打印出问题。第二个循环是用来打印我们的菱形,在这里当数组里的数为1时就打印星号,数组里的数为0就打印空格。当退出第二个循环的时候,我们选择换行,打印下一行的内容。第一个循环我们用来改变数组的值。

2024-08-24 16:56:12 1208 2

空空如也

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

TA关注的人

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