- 博客(55)
- 收藏
- 关注
原创 蓝桥杯_如何快速记忆数码管的段码
我们都知道,在往届蓝桥杯电子赛的比赛试题中,总能碰见在数码管用字母来表示的时候,我摘取部分试题给大家看一下:break;break;break;break;break;break;break;break;break;break;break;如果大家硬要背诵的话,可能会十分的困难,所以我自己思考了一下如何快速记忆这些段码的方法,需要大家稍微的动脑写一下。
2025-04-05 19:36:16
183
原创 蓝桥杯_PCF8591
在蓝桥杯比赛中提供的板子原理图中,上面这张照片就是PCF8591的原理图,大家仔细观察本章图片的右下角位置,你会发现:P20、P21后面的SCL和SDA,这两个线就是I2C的核心线,I2C需知道的相关底层知识点,如若不理解I2C通信,推荐大家去哔哩哔哩看这个博主的视频【4分钟看懂!I2C通讯协议 最简单的总线通讯!1 SDA:提供信息通道 SCL:提供精确的频率 GND:接地线2 当SCL为高电平时:(1)SDA从高到低的跳变为开始信号(2)SDA从低到高的跳变为结束信号。
2025-04-04 15:46:34
429
原创 蓝桥杯_DS18B20温度传感器
关于DS18B20,他是一个CMOS器件,也就证明了他是一个低功耗的设备,在正式进入这个模块学习之前,我们要知道一个课外小知识:VDD和VCC有什么区别?答:VDD强调用于低功耗及多种电压,VCC通常表示5v,但是他们俩并没有本质的区别,只是使用习惯上有不同而已,大家不必纠结这两个符号的区别我会介绍相关比较重要的点,具体的功能和器件请搜寻其他博主的博客,自行查阅1.DS18B20的温度测量范围从-55℃到+125℃2.分辨率在9位到12位之间,可以由用户自己进行设置。
2025-03-26 20:05:33
970
原创 蓝桥杯_DS1302时钟
DS1302是时钟的芯片,可以显示对应的时钟和日期,这里有一个前提,需要连接着电源,如果把程序在今天烧录到板子里,然后不连电,第二天的数据并不准确,所以说,如果想要准确的日期,那么需要一直给板子提供电源。这里所说的数据,使用841BCD码来保存并传输,传输八位数据,这八位数据的最后一位,决定着是读还是写;1表示读,0表示写,如果想要真正运行DS1302,需要先写再读。
2025-03-23 11:00:35
1047
原创 蓝桥杯_通过按键控制数码管显示数字
由于中断和定时器相关的知识点略简单,我目前并没有打算写该两部分的内容,如果大家有需要这部分的,可以在评论区反馈,如果需要我会及时补上蓝桥杯中的中断和定时器的部分。大家看这篇文章的标题,按键控制数码管显示数字,首先脑子里要有一个整体框架,我们需要创建两个.c文件,一个是按键key,另一个是数码管seg,然后用main.c文件显示数字即可。
2025-03-16 14:18:22
1013
原创 scanf函数
表示该输入项,读之后不赋予相应变量,跳过该输入值例如:scanf(”%d%*d%d“,&a,&b)当输入1 2 3时,就会把1赋予a,2被跳过,3赋予b。
2024-01-09 23:17:52
626
原创 数据输入输出的概念及在C语言中的实现
1 所谓输入输出是以计算机为主体而言的2 本章介绍的是向标准输出设备显示器输出数据的语句3 在C语言中,所有的数据输入、输出 都是由库函数完成的,因此都是函数语句4 在使用C语言库函数时,要用编译命令#include将有关“头文件”包括到源文件中,使用标准输入输出库函数时要用到“stdio.h”文件,因此源文件开头由以下预编译指令#include<stdio.h>或者#include"stdio.h"stdio是standard input&output的意思标准的输入输出。
2024-01-08 10:40:55
1375
原创 数据结构补充知识点
在这里呢,有一个非常有意思的题,这道题很容易出错在这里,如果正常分析的话,q应该是21 ,为什么最后出现了22呢,那么这里面就有一个意外,由于编译器的原因,他会先运算【(++j)+(++j)】,也就是说他所运行出来的应该是7,那么结果就应该是7+7+8=22,记住吧,应该学到数据结构就能解释通了。
2024-01-07 20:26:45
421
原创 数据类型----基本类型
1 基本数据类型:不可以再分解成其他类型了,是自我说明的2 构造数据类型:一个构造类型的值可以分解成若干个成员或者元素,每个成员都是一个基本数据类型或者又是一个构造类型例如:数组类型、结构体类型、共用体(联合体)类型3指针类型:他的值是用来表示某个变量在存储器中的地址4 空类型:再调用函数时,通常向调用者返回一个函数值,这个函数值具有一定的数据类型,应在函数定义及函数说明中给以说明,例如在前序中,写的int max(int a,int b);
2024-01-07 15:18:16
928
原创 进阶C语言学习前序
我们前期用了二十天的时间,学习了各种函数,我们已经初步具有敲写代码的能力,但是我们想要使用C语言去学习单片机的东西还是远远不够的,那么我们就需要深入了解和掌握更加深入的C语言知识,就有了接下来的学习计划,利用接下来寒假的不到二十天的时间,通过继续学习C语言,从而提高自己的C语言编写能力。我们大致观察上面这个代码,针对于前面的学习,并没有去深入学习两个int的定义和max函数的调用,接下来需要学习的东西越来越多,越来越难。数组、函数、指针、宏定义、结构体、链表、虚拟机等。
2024-01-06 10:19:00
448
原创 字符指针
将指针指向ch1,通过修改指针p的值,让他的h变成了H,那么ch1的值也被修改了,所以说输出的p和ch1都是大写H,之后,又将ch2的h赋值给了p,那么ch2正常还是小写h。2通常,我们把char数据类型的指针变量称为字符指针变量。字符指针变量与字符有着密切关系,他也被用来处理字符串。3初始化字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针中。FE00表示的是指针所对应的内存单元。
2023-12-26 16:59:44
544
原创 指针和二级数组
看上面的代码,我们观察最后两个式子,a+1表示从a[0]行换到a[1]行,然后在加一个*(a+1)就是降级了,从二级指针降到一级指针,我在*(a+1)的基础上,再+1就替换成了一级指针,在*(a+1)+1的基础上最前面在加一个*就会移动到a[1][1]的位置,以上呢就是用行指针来表示二维数组的某个元素。二维数组名代表数组的起始地址,数组名加1,是移动的一行元素,因此,二维数组名常被称为行地址。·int a3,含有三个元素,a[0],a[1],a[2]·元素a[0],a[1],a[2]都是一维数组名。
2023-12-25 13:41:01
935
原创 数组元素反序
在最前面的 定义的时候,我们将p(0)定义在了1上,但是我们加入了p++,也就是说,指针p向右移动了一位,此时的p(0)就重新定义在了2上,最后要求输出的p(1)便是2的下一位数,便是3啦。那么接下来修改一下这个程序,我们接下来解释一下p++的概念。第一位和最后一位交换位置,然后用比大小+循环。和前面的字符串逆向输出有异曲同工之妙。
2023-12-24 21:54:40
398
原创 指针与数组
(1)在C语言中,数组的指针是指数组在内存中的起始地址,数组元素的地址是指指数组元素在内存中的起始地址。指针变量和数组在访问数组中元素时,一定条件下其使用方法具有相同的形式,因为指针变量和数组名都是地址量。一共可以分为两大类,a[i]和*(p+i),又因为p=a,所以说,前面的两大项,p和a是可以互换的。(x+i) 和px[i]具有完全相同的功能:访问数组的第i+1个数组元素。(2)一维数组的数组名为一维数组的指针(其实地址)但指针变量和数组的指针(或叫数组名)在本质上不同,a+1 ,*(a+2) (对)
2023-12-24 18:17:25
331
原创 指针的运算
指针运算是以指针变量所存放的地址量作为运算量而进行的运算,指针运算实质就是地址的计算,他只能运送三种,分别是赋值运算、算数运算和关系运算。px-py运算的结果是两个指针指向的地址位置之间相隔数据的个数。(1)两个指针之间的关系运算符表示他们指向的地址位置之间的关系,指向地址打的指针大于指向地址小的指针。指针从pa向右移动了两个单位,到了pb,但是为什么地址变化了8呢,那是因为int的一个字节是4。两个指针相减的结果值不是地址量,而是一个整数值,表示两指针之间相隔数据的个数。
2023-12-24 12:48:53
349
原创 指针的含义
pa这个含义就是取pa的地址,那么pa是一个虚拟的地址,只是简单的存放了pa而已,所以输出的该是pa的虚拟地址。如果电脑是64位的,不管是int、double、char等,那么都是8个字节。*pa就是指针,最后指向了a=10,所以他最后程序输出是10。pa表示的意思就是这个地址,并不会显示出10这个数字。(2)指针有多少个字节?
2023-12-24 05:32:22
399
原创 指针的概念
他就相当于a=10存放在了0x61FE14这个地址当中,然后在指针pa中,这个指针存放在了0x61FE10这个地址中,但是这个指针可以访问0x61FE14东西。在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,有时对地址,指针和指针变量不区分,统称指针。指针在说明的同时,也可以被赋予初值,叫做指针的初始化。一般情况下,最前面的存储类型通常会省略。还是敲代码吧,敲代码明白。
2023-12-23 18:27:08
359
原创 字符串逆序输出
逆序输出就是本来abc输出的,然后我想让他输出成cba,那么我们还是要用到for循环,只不过原先是从零开始往上加,这回呢,是从上面往下减。我们观察上面这个图片,我们想要输出olleh,那么我们就要从4开始往后减,所以说应该为n-1,然后i>=0。在最后的最后,我再写一种高级写法,这种方法,是面试的时候经常出的方法———调换位置。那么我们如何去省略倒序后的前面的一堆零,我们要引入后面的一个知识,strlen。然后我们进入下一个层次,如何添加输入的前缀,那么我们假如宏定义,例如这样。
2023-12-19 18:29:35
483
原创 字符数组初始化二维数组
C语言中没有字符串常量,用字符数组处理字符串,字符串结束表示:‘\0’n表示行,行数=一维数组,整个二维数组/单行数组。m表示列,单行总共占据的大小/他的元素类型。putchar是输出字符。
2023-12-19 17:15:15
600
原创 字符数组的初始化
s表示的是字符输出,那么我们可以发现为什么第一行后面有两个问号,在前面的学习中,我们知道字符和字符串之间只差\0,那么如果输出的话,他们俩是不可以相等的,第一行str1他是缺少\0,所以说str1他输出的时候存在问题;第二行为什么就能输出正确呢,因为str2他在中括号里面存在6,但是后面只存在三个字符,所以说后面的他只会用0去填充,虽然说abc是三个字符,但是程序在识别的时候,他的后面存在\0,那么他最后输出的就可以是“abc”了。putchar是单独输出字符的,字符输出函数。
2023-12-18 22:42:55
347
原创 二维数组的定义
因为他是要写出两行三列,那么我们就需要去用两个for循环嵌套,就跟九九乘法表的意思差不多。我们观察这个代码,可以发现二维数组它可以看成两个一维数组的结合,2*3*4=24。在二维数组中,存放顺序是先存放行,在存放列,因为内存是一维的。那么接下来我们进行敲代码。那么,接下来我们打代码。数据类型 [常量表达式][常量表达式]第一个行数,第二个列数。元素个数=行数*列数。
2023-12-17 20:11:57
354
原创 冒泡排序代码练习
什么是冒泡排序,就是让数组按照从大到小,或者从小到大排列出来,我们在排列大小之前首先要先把数组的几个数先列出来,然后再根据数组的所有数进行前面学过的比大小的知识计算,这是我们整体的一个思路,接下来我们一步一步写。一共五个数,所以要比较四次,第一次比较出来一个16,第二次比较出来13,第三次8,第四次2,剩下个1就不用比较了, 我们把比较的次数设成i,第一个for循环是比较次数,第二个嵌套循环一次的比较数量,最后符合条件交换,最后得到第一次的值再进行下一次。我们在这个基础上进行修改。
2023-12-17 12:39:39
455
原创 一维数组的引用和初始化
我们现在理解代码的第七行,我先举个例子,假设有一堆苹果,总价和单价都知道,那么总价除以单价就是数量,在前面我们知道 内存字节数=数组维数*sizeof(元素数据类型),所以用内存字节数除以数据类型就是数组维数,其次代码第十五行,前面有解释过,我在解释一遍,4*6=24,因为a[]是一个数组,他不能表示全部,他只可以数一个个表示。(2)只能逐个引用数组元素,不能一次引用整个数组。(2)static数组没有赋值,系统自动赋值为0。(3)假如给部分数组赋初值,那么后面的自动为0。(1)数组必须先定义,再使用。
2023-12-16 23:46:58
368
原创 一维数组的定义
(1)数组是具有一定顺序关系的若干变量的集合,组成数组的各个变量统称为数组的元素(2)数组中的各元素的数据类型要求相同,用数组名和下标确定,数组可以是一维的,也可以是多维。
2023-12-16 22:18:43
402
原创 continue语句
我们观察这个代码,会发现代码并没有终止运行,仅仅是把符合n%3的结果忽略掉了,后面的照常进行,直到for整个循环循环完再结束。continue结束本次循环,接着判断下一次是否循环,我们上实例,用代码去理解continue。continue直结束本次循环,而break终止本层循环。continue和break的区别就是。
2023-12-16 17:46:34
385
原创 break用法
如果圆的面积大于100就会终止循环,那么如何体现出他只能终结一个循环呢,请看下面这个代码,我们都知道while(1)他是一直循环的,而内层for加入了break就成了终止的了,并没有阻止while循环break只终结了for的循环。如果需要终止while的话,需要在后面加入break才可以,例如这样。但是值得注意的点事break只能用在循环语句和switch当中。break他是用于从循环语句中跳出一层循环体的,提前结束循环。
2023-12-16 13:00:15
405
原创 C语言中的九九乘法表
我们仔细观察这个代码,在第6行代码,我们称之为外循环,第8行代码我们称之为内循环,我们先运行一次i,i=0了,然后再将内循环每个都循环一遍,循环完内循环了,在跳出内循环进入一次外循环,进行完第二次循环再把内循环的j再都循环一遍,直到最外层i循环结束。在这里的思路我就不做过多解释了,自己分析代码便可得知,\t的意思事空格,让输出的每个东西之间加一个空格,这样输出就会更加的整齐,puts(“”);我们在正式进行九九乘法表之前,我们先进行一个for循环的嵌套,那么我进行一个简单的for循环嵌套的代码解释。
2023-12-16 12:31:36
797
原创 三大循环语句
dowhile最重要的是,我们先运行do后面的程序然后再跟while后面的范围比较,但是while循环呢,他是先比较范围,再进行运行。
2023-12-14 22:56:03
724
原创 ifelse语句和switch语句结合
但是大家有没有发现一个问题,我上面的代码存在一定的问题,如果我输入100分的话,他最后输出的会是D,如果想要进行修改的话,那我们需要在case中,再次加入case 10:,就可以正常运行了,switch唯一的不好点就在switch后面必须跟整数,不可以是小数。我们先回忆以前大打过的一个代码,那个按成绩来评ABCD的,我们可以发现如果单独用ifelse的话,写的很长,所以说,我们该思考如何进行用switch语句,进行优化呢。
2023-12-14 15:34:13
603
原创 控制语句——switch
这节课我认为还是蛮简单的,switch我认为比较难的点就是背这个格式,任何但单词和标点符号都不能打错,一旦背会这个switch,我觉得switch语句用的应该还是比较多的吧。(5)break的作用是强行跳出switch体,每个case后面都要有一个break,default分支后面break可以省略。如果说我不加入break,那么就会把每一行的东西输出,break的作用就是跳出语句case。(2)当表达式的值和case后面的表达式值一样了,那么就会执行case后面的语句。基础知识总是枯燥乏味的,直接上图。
2023-12-13 23:40:24
403
原创 if-else语句
那么这两个代码最主要的思想就是,去介入一个新的数据t,就比方说,你有杯A奶茶杯B西瓜汁,你的目的是要把奶茶和西瓜汁调换地方,杯A西瓜汁杯B奶茶,那么你需要拿另一个空杯子,先把其中一杯的倒在空杯子里,然后再把另一杯奶茶倒在刚倒出来的空杯子里,再将最开始空杯子里的饮料倒在现在是空杯子的地方,就实现了交换位置,那么我进行可视化来解释。在这个语句中,最重要的思想就是逻辑思想,我们要带着逻辑思维去学习本篇章的if-else语句。(3)区分if(x=1)和if(x==1),这个地方还存在一点疑问,标记一下。
2023-12-13 12:05:46
1408
原创 字符串输入输出函数
我们看代码解释上面的意思,输入串长度应小于字符数组维数,的意思是我们输入的字符串一定要少于等于四个,因为在我们敲上去东西的时候,他会自动加入一个\0,\0独自占一个字符,而你规定的字符长度是五,并且又不能超过5,所以说,你输入的字符数量就不可以大于4了。总而言之,gets()--读取整行输入,直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符的末尾添加一个空字符使其成为一个 C 字符串。他所具备的功能是当我在键盘上输入的以回车结束的字符串放到字符数组中,他会自动加“
2023-12-12 21:20:50
360
原创 如何进行输入函数垃圾清理
在正式讲输入函数的垃圾处理,我应该引入一个代码本来我们想要输入两个东西,然后再输出的,最后发现我输入了一个3,我按了回车键最后直接把这个程序的运行结果直接展现出来了,那么如果我是按空格呢?大家想一想会是什么后果呢?因为空格在C语言里面表示的是让程序停止运行,尽管我们上面的代码中输入了g但是依旧蹦年运行那么这个程序就是没有达到我们的心里所预期的东西,那么我们如何根据上面的代码进行修改呢,我们这里一共提供两种思路来解决方法1:用getchar清除方法2:用格式串中空格或“%*c”来 吃掉。
2023-12-12 18:00:41
417
原创 字符输入(getchar)和格式输入函数(scanf)
假如说是这样的输入(%d%d%d),我输完一个数字后,我需要先敲一下回车键去输入下一行,直到输入好三行再敲回车才可以产生新的运行结果。1在asc码中表示49,空格表示10,2表示50,这就解释了如果让%c作为格式符,空格也算一位。scanf所支持的格式字符和前面的格式输出函数(printf)一样,记住前面的即可。那么这一类的东西叫做系统的信号 指令,咱们学习将会在linux上学,不着急。putchar:是让他输出的,跟printf有相似的样子。那么接下来讲一下如果用字符该怎么办,%c。
2023-12-12 17:19:39
649
原创 格式输出函数
在后面输出的时候printf(" %s \n",数据),%f就是小数(保留六位小数),%e指数形式的小数,%g跟%f差不多,%g只保留小数的有效数字。一共是12位,%15s就是要输出15位,则前面有三个空,%10.5s的意思就是先保留前五位(hello),然后在输出10位的,那么输出就是前面有五个空的hello,%2.5s就是先保留5位数,hello,但是他要求输出2位,但是2小于整体的数位,所以就直接正常输出,%.3s就是要保留三位,直接输出即可。(9)极为特殊的百分号本身——%%
2023-12-11 16:12:29
700
原创 字符输出函数putchar
这个知识点很浅显,未来会和具体的实例相结合,enjoy looking forward to。这里面putchar(‘\n’)的意思是换行,所以就运算为这个样子,而不是两个挨着的AB。在此我通俗的讲一下,就是把asc罗马数字2的值转化为所对应的字符。参数:c为字符常量,变量或者表达式。功能:把字符c输出到显示器中。返回值:正常,为显示的代码值。格式:putchar(c)
2023-12-09 20:07:09
449
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人