自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 9. 结构成员访问操作符

/代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化。

2024-04-09 21:10:56 489

原创 智能感应门改造工程

今天记录一下物联网专业学的工程步骤及实施过程。

2024-04-06 22:13:46 773 1

原创 字符分类函数

C语言中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使用都需要包含⼀个头文件是 ctype.hislower 是能够判断参数部分的 c 是否是小写字母的。通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0。

2024-04-03 22:44:48 343

原创 学会用IarIdePm软件(IAR)创建新工程(适用于CC2530单片机)

(自由命名,但是文件夹名字中尽量不要出现汉字)

2024-04-02 21:55:36 922

原创 strstr 的使用和模拟实现

The matching process does not include the terminating null-characters, but it stops there.(字符串的比较匹配不包含 \0 字符,以 \0 作为结束标志)。(函数返回字符串str2在字符串str1中第⼀次出现的位置)。

2024-04-01 22:32:51 261

原创 2. 结构体内存对齐

掌握了结构体的基本使用了。现在我们深⼊讨论⼀个问题:计算结构体的大小。这也是⼀个特别热门的考点: 结构体内存对齐。

2024-03-31 22:15:17 381

原创 第10讲:操作符详解

/代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯⼀的计算路径,那这个表达式就是存在潜在风险的,建议不要写出特别复杂的表达式。

2024-03-30 22:48:46 1472

原创 最小偶倍数

每个偶数和2的最小公倍数是自身,每个奇数和2的最小公倍数是自身的二倍。解释:6 和 2 的最小公倍数是 6。注意数字会是它自身的倍数。给你一个正整数 n ,返回 2 和 n 的最小公倍数(正整数)。和1进行与运算,结果为0是偶数,结果为1是奇数。对2取余,结果为0是偶数,结果为1是奇数;解释:5 和 2 的最小公倍数是 10。

2024-03-28 21:50:27 233

原创 下标访问[]、函数调用()

操作数:⼀个数组名 + ⼀个索引值(下标)

2024-03-27 21:18:03 264

原创 计算求和

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222。

2024-03-26 21:53:14 440

原创 逗号表达式

逗号表达式,从左向右依次执行。整个表达式的结果是最后⼀个表达式的结果。逗号表达式,就是用逗号隔开的多个表达式。

2024-03-25 19:28:44 99

原创 操作符的属性:优先级、结合性

C语言的操作符有2个重要的属性:优先级、结合性,这两个属性决定了表达式求值的计算顺序。

2024-03-24 20:05:56 430

原创 第9讲:函数递归

把Print(1234) 打印1234每⼀位,拆解为首先Print(123)打印123的每⼀位,再打印得到的4,把Print(123) 打印123每⼀位,拆解为⾸先Print(12)打印12的每⼀位,再打印得到的3直到Print打印的是⼀位数,直接打印就行。所以斐波那契数的计算,使用递归是非常不明智的,我们就得想迭代的方式解决。函数不返回,函数对应的栈帧空间就⼀直占用,所以如果函数调用中存在递归调用的话,每⼀次递归函数调用都会开辟属于自己的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。

2024-03-23 15:16:37 2653

原创 二进制文件和为文本文件

如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符⼀个字节),而二进制形式输出,则在磁盘上只占4个字节(VS2019测试)。如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。字符⼀律以ASCII形式存储,数值型数据既可以⽤ASCII形式存储,也可以使用二进制形式存储。数据在内存中以⼆进制的形式存储,如果不加转换的输出到外存的文件中,就是二进制文件。根据数据的组织形式,数据文件被称为文本文件或者二进制文件。

2024-03-22 22:17:08 437

原创 函数判断素数

返回值:必须要有返回值,0表示不是素数,1表示是素数。检测该数据是否为素数,方法参考前文。

2024-03-21 22:11:17 238

原创 Debug和Release

当程序员写完代码,测试再对程序进行测试,直到程序的质量符合交付给用户使用的标准,这个时候就会设置为release ,编译产生的就是 release 版本的可执行程序,这个版本是用户使用的,无需包含调试信息等。程序员在写代码的时候,需要经常性的调试代码,就将这里设置为 debug ,这样编译产生的是debug 版本的可执行⾏程序,其中包含调试信息,是可以直接调试的。对比可以看到从同⼀段代码,编译生成的可执行文件的大小,release版本明显要小,而debug版本明显大。

2024-03-20 22:23:02 537

原创 调试 ------举例

数组在内存中的存放是:随着下标的增长,地址是由低到高变化的。如果是左边的内存布局,那随着数组下标的增长,往后越界就有可能覆盖到i,这样就可能造成死循环的。这里确实是巧合,在不同的编译器下可能中间的空出的空间大小是不一样的,代码中这些变量内存的分配和地址分配是编译器指定的,所以的不同的编译器之间就有差异了。在VS上切换到X64,这个使用的顺序就是相反的,在Release版本的程序中,这个使用的顺序也是相反的。栈区内存的使用习惯是从高地址向低地址使用的,所以变量i的地址是。arr数组的地址整体是小于i的地址。

2024-03-19 20:50:35 377

原创 9. 编程常见错误归类

编译型错误⼀般都是语法错误,这类错误⼀般看错误信息就能找到⼀些蛛丝马迹的,双击错误信息也能初步的跳转到代码错误的地方或者附近。编译错误,随着语言的熟练掌握,会越来越少,也容易解决。看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。运行时错误,是千变万化的,需要借助调试,逐步定位问题,调试解决的是运行时问题。

2024-03-18 21:01:49 204

原创 VS调试快捷键

逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部。在函数调用的地方,想进⼊函数观察细节,必须使用F11,如果使用F10,直接完成函数调用。断点的作用是可以在程序的任意位置设置断点,打上断点就可以使得程序执行到想要的位置暂定执行,接下来我们就可以使用F10,F11这些快捷键,观察代码的执行细节。:逐过程,通常用来处理一个过程,⼀个过程可以是⼀次函数调用,或者是⼀条语句。:启动调试,经常用来直接跳到下⼀个断点处,一般是 和F9配合使用。那程序员怎么调试代码呢?

2024-03-17 17:45:10 268

原创 监视和内存观察

开始调试后,在菜单栏中【调试】->【窗⼝】->【监视】,打开任意⼀个监视窗口,输入想要观察的对象就行。如果监视窗口看的不够仔细,也是可以观察变量在内存中的存储情况,还是在【调试】->【窗口】->【内存】在打开内存窗口后,要在地址栏输入:arr,&num,&c,这类地址,就能观察到该地址处的数据。除此之外,在调试的窗口中还有:自动窗口,局部变量,反汇编、寄存器等窗口,自行验证使用一下。在调试的过程中我们,如果要观察代码执行过程中,上下文环境中的变量的值,有哪些方法呢?

2024-03-16 21:32:02 495

原创 谈一谈最近情况

最近一直在赶课,准备去实习了。目前状态很疲惫,可能后续不会一日一更了。但是还是会一直坚持更的,希望我们一直努力一直幸运!学习c语言这段时间中,感觉还不错,还是也不能掉以轻心,毕竟还有很多的东西需要学习!小哥哥越来越帅,小姐姐越来越美!

2024-03-15 23:39:15 75

原创 main函数

main 函数也被叫做:主函数。main 前面的 int 表示 main 函数执行结束的时候返回⼀个整型类型的值。所以在 main 函数的最后写 return 0;每个 C 语言程序不管有多少行代码,都是从 main 函数开始执行的, main 函数是程序的入口,• 即使⼀个项目中有多个.c文件,但是只能有⼀个main函数(因为程序的入口只能有⼀个)• main函数有且仅有⼀个u。• main 被写成了mian。• main函数是程序的入口。• main后边的()漏掉了。• ⼀条语句结束后,有分号。

2024-03-14 21:01:38 185

原创 关键字介绍和字符和ASCII编码

C语言中有⼀批保留的名字的符号,比如: int 、 if 、 return ,这些符号被称为保留字或者关键字。• 关键字都有特殊的意义,是保留给C语言使用的• 程序员自己在创建标识符的时候是不能和关键字重复的• 关键字也是不能自己创建的。注:在C99标准中加入了等关键字。

2024-03-13 23:16:11 457

原创 第7讲:数组和函数实践:扫雷游戏

再继续分析,我们在棋盘上布置了雷,棋盘上雷的信息(1)和非雷的信息(0),假设我们排查了某⼀个位置后,这个坐标处不是雷,这个坐标的周围有1个雷,那我们需要将排查出的雷的数量信息记录存储,并打印出来,作为排雷的重要参考信息的。这里我们肯定有办法解决,比如:雷和非雷的信息不要使用数字,使用某些字符就行,这样就避免冲突了,但是这样做棋盘上有雷和⾮雷的信息,还有排查出的雷的个数信息,就比较混杂,不够方便。扫雷的过程中,布置的雷和排查出的雷的信息都需要存储,所以我们需要⼀定的数据结构来存储这些信息。

2024-03-12 21:57:12 2950

原创 了解转义字符

这就是转义字符的问题, \n 是⼀个转义字符表示换行的意思,我们可以简单的理解为 \ 让 n 的意思发生了转变, n 本来是⼀个普通的字符,被 \ 转义为换行的意思。其实在字符中有⼀组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,用于字符串的结束标志,其ASCII码值是0.• \t :制表符,光标移到下⼀个水平制表位,通常是下⼀个8的倍数。• \b :退格键,光标回退⼀个字符,但不删除字符。

2024-03-11 18:03:22 397

原创 注释是什么?为什么写注释?

注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。注释是给程序员自己,或者其他程序员看的。好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。当然不写注释可能会让后期阅读代码的人抓狂。写注释一定程度上反应了程序作者的素质,建议大家写必要的注释,在未来找工作的时候,写代码时留下必要的注释也会给⾯试官留下更好的印象。

2024-03-10 20:07:43 278

原创 1.语句和语句分类

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。空语句,一般出现的地方是:这里需要一条语句,但是这个语句不需要做任何事,就可以写一个空语句。复合语句其实就是前面讲过的代码块,成对括号中的代码就构成一个代码块,也被称为复合语句。转向语句:break语句、goto语句、continue语句、return语句。循环执行语句:do while语句、while语句、for语句;

2024-03-09 20:17:45 955

原创 合并有序数组

输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。7. 至此, arr3 数组中的元素为 arr1 数组和 arr2 数组合并并排序后的结果,按序输出前 k个元素即可。定义⼀个长度为 n+m 的新数组 arr3 ,以及两个指针 i 和 j ,分别指向 arr1 和arr2 的开头;定义⼀个长度为 n+m 的新数组 arr3 ,将两个有序数组合并到 arr3 数组中,使得 arr3 数组有序。定义⼀个计数器 k ,初始化为 0;

2024-03-08 22:36:19 744

原创 字符串拷贝

使用while 循环通过指针的方式逐⼀拷贝源字符串中的每⼀个字符,直到遇到字符串结束标志\0 ,然后将该标志也拷贝到目标字符串中。注意,如果源字符串为空,该函数直接返回,不进行任何操作。写⼀个函数my_strcpy,实现拷贝字符串的功能,假设给定⼀个字符数组a,再给定⼀个字符数组b,将字符串a中的内容拷贝到字符串b中,拷贝内容包含字符串末尾的 \0 字符。

2024-03-07 18:52:04 466

原创 删除指定的数

先输入10个整数存放在数组中,再输入⼀个整数n,删除数组中所有等于n的数字,数组中剩余的数组保证数组的最前面,打印剩余的数字。如果当前数字不等于给定整数,就将该数字放在数组中的位置 j ,然后将 j自增 1。i 从前往后扫描整个数组, j 记录当前剩余的数字应该放在数组的哪个位置。最后, j 的值为删除后的数组长度,将数组中前 j 个数输出即可。这样, j 指向的位置就是数组中下⼀个剩余数字应该放置的位置。使用两个指针 i 和 j。

2024-03-06 21:40:12 520

原创 学习计算天数

按照大小月将十二个月份的天数记录在数组中直接获取,特判年份是闰年并且月份是二月的情况即可。输入y和m两个整数,y表示年份,m表示月份,计算y年m月有多少天,并输出天数。

2024-03-05 20:20:09 527

原创 判断回文字符串

输入⼀个字符串,判断这个字符串是否是回文字符串(字符串的长度小于等于30,字符串不包含空格),如果是回文字符串输出Yes,如果不是回文字符串输出No。

2024-03-04 22:42:08 209

原创 求数字的每一位之和

在每次循环中,我们可以通过取模运算( % )和整除运算( / )来获取m的最后⼀位和去掉最后⼀位的新值。具体来说,我们可以使用 m % 10 来获取m的最后⼀位数字,而通过 m / 10可以获取去掉最后⼀位后的新值。然后,我们可以使用循环来不断地取出整数m的最后⼀位,并将其加入到 sum 中,直到m变为0。当m变为0时,整个求和过程结束,此时 sum 中存储的就是整数m的每⼀位之和。我们可以通过不断获取该整数的个位数,然后将该位数从整数中删除,重复这个过程直到整数为0,

2024-03-03 21:25:12 332

原创 第六讲:函数

了解了库函数,我们的关注度应该聚焦在自定义函数上,自定义函数其实更加重要,也能给程序员写代码更多的创造性。一般我们在使用函数的时候,直接将函数写出来就使用了。比如:我们要写一个函数判断一年是否是闰年。//判断⼀年是不是闰年return 1;if(r == 1)printf("闰年\n");elseprintf("⾮闰年\n");return 0;上面代码中橙色的部分是函数的定义,绿色的部分是函数的调用。

2024-03-02 20:32:01 1598

原创 逆序字符串

因此,我们可以定义两个指针分别指向字符串首首位和末位,对其进行交换操作,然后将两个指针相向移动⼀位,继续交换剩余字符。直至两个指针的相对位置发生变化时结束操作,最终得到的字符串即为逆序后的字符串。最中间的两位互换,或者字符串长度为奇数时,中间字符不变。输入⼀个字符串,写⼀个函数将⼀个字符串的内容逆序过来。第二位与倒数第二位互换;

2024-03-01 22:30:54 306

原创 求字符串长度【进阶版】

在递归函数中,函数会调用自己,并在每次调用中传入不同的参数,直到达到某个基准条件,然后递归结束并返回结果。输⼊一个字符串(字符串长度小于等于30,中间不包含空格),使用Strlen函数可以求字符串的长。写⼀个函数Strlen,可以求字符串长度,除了函数的形参,函数中不能使用多余的变量。递归结束条件:递归必须有⼀个结束条件,否则会导致无限递归,最终导致堆栈溢出等问题。递归传参:递归函数每次调用自身时,需要传入不同的参数,以处理不同的情况。递归调用:字符串的长度=1+后面子字符串的长度;

2024-02-29 22:53:45 334

原创 求字符串长度

字符串是由一系列字符组成的,这些字符依次存储在内存中,以字符数组的形式存在,数组的最后⼀个元素是空字符’\0’,用来表示字符串的结束。比如说字符串"hello",在内存中存储的形式就是’h’、‘e’、‘l’、‘l’、‘o’、‘\0’。指针是一种可以指向内存地址的数据类型,我们可以通过移动指针的位置来访问内存中的不同数据。在本题中,我们可以定义⼀个指向字符串开头的指针,并不断地移动它来计算字符串长度。输入一个字符串(字符串长度小于等于30,中间不包含空格),使用Strlen函数可以求字符串的长度,并返回。

2024-02-28 21:25:14 483

原创 求两个整数的平均值

两数本身和两数的平均数不会溢出,考虑平均数与其中⼀个数的差:(x+y)/2-x=(y-x)/2;输入2个整数m和n,写一个函数average,求2个整数的平均值,考虑整数过大溢出的问题。本题最直观的解法为:两数相加后除以二向下取整。不过因为整数过大时,两数相加会溢出的问题,要求得 (x+y)/2,我们可以先求得 x 与 (y-x)/2,然后求得他们的和即可;x 与 (y-x)/2 在计算过程中都不会溢出,因此这个方法成立。

2024-02-27 23:23:49 486

原创 交换两个整数

在调用函数时,将需要交换值的两个整数变量的地址作为参数传递给函数,可以使用& 运算符来获取变量的地址。定义⼀个函数 Swap ,参数是两个整型指针,表示需要交换值的两个整数变量的地址。明确函数的作用,即交换两个整数的值。写⼀个函数Swap,可以交换两个整数的内容。注意必须实现成函数完成。输入2个整数,调用自定义函数Swap,完成2个整数的交换。在函数中,使用⼀个临时变量来存储第一个整数变量的值。将第二个整数变量的值赋给第一个整数变量。将临时变量的值赋给第二个整数变量。

2024-02-26 21:00:21 170

原创 学会字符转换

输入⼀一个字符串,将字符串中大写字母全部转为小写字母,小写字母转成大写字母,其他字符保持不变。注:字符串的长度小于等于30,其中字符串中包含空格。具体来说,我们可以使用一个循环来遍历字符串中的每个字符。对于每个字符,我们检查它是大写字母、小写字母还是其他字符。如果它是大写字母,我们将其转换为小写字母;如果它是小写字母,我们将其转换为大写字母;如果它是其他字符,则不需要进行任何转换。tolower():将字符转换为小写字母。toupper():将字符转换为大写字母。

2024-02-25 21:43:46 308

智能感应门改造工程视频

当有人时,门打开 当没人时,门关闭

2024-04-06

空空如也

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

TA关注的人

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