自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言递归刷题(一)

递归最重要的就是去思考它的结束条件如果有不足之处,还望博友们指出最后祝福我们题题AC。

2024-04-27 20:43:49 441 1

原创 win32 API 函数

WIN32API就是MicrosoftWindows32位平台的应⽤程序编程接⼝win32 API 中有许多可以调用的函数下面就为大家介绍一下这些函数。

2024-04-20 17:13:24 846 1

原创 单链表实现通讯录

Contact.h 声明通讯录函数,定义结构体。test.c 测试通讯录函数。Contact.c 实现通讯录函数。为了方便,就调用单链表的部分函数来实现通讯录。用单链表实现通讯录需要五个文件。姓名,性别,年龄,电话,地址。但其实三个文件也可以实现。

2024-04-19 20:15:38 256

原创 单链表(详解)

链表在物理结构上不一定是连续的在逻辑结构上一定是连续的(可以通过前一个节点的指针找到下一个节点)链表是由一个一个的节点组成的,一个节点存储:指向下一个节点的指针和一个任意类型的数据由此可以知道链表可以通过前一个节点的指针找到下一个节点,各个节点就串联起来了也可以把链表类比成一列火车,火车(链表)有一列列车厢(节点)组成。

2024-04-19 17:19:21 699 1

原创 Leetcode刷题——链表的中间节点

解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。给你单链表的头结点 head ,请你找出并返回链表的中间结点。输入:head = [1,2,3,4,5,6]如果有两个中间结点,则返回第二个中间结点。输入:head = [1,2,3,4,5]解释:链表只有一个中间结点,值为 3。所以慢指针走一个节点,快指针走两个节点。2*慢指针 = 快指针。输出:[3,4,5]输出:[4,5,6]偶数个数据有两个节点。奇数个数据有1个节点。

2024-04-15 18:34:33 224 1

原创 双向链表的实现(详解)

链表的分类: 带头 不带头 单向 双向 循环 不循环一共有 (2 * 2 * 2) 种链表带头指的是:带有哨兵位节点哨兵位(头结点):可以放随机数据,哨兵位指向的下一个节点就是我们的第一个有效节点,我们指的头节点是哨兵位单向:指针只能从前向后遍历双向:指针既可以从前向后遍历又可以从后向前遍历循环:可以通过尾节点找到头节点,从而达到循环主要使用的链表是单链表和双向链表单链表:不带头单向不循环双向链表:带头双向循环。

2024-04-14 23:29:03 473 1

原创 动态顺序表实现通讯录代码(详解)

基于动态顺序表实现通讯录项目顺序表的每个数据都是一个结构体也就是每个联系人信息。

2024-04-07 20:23:10 573 2

原创 数据结构顺序表的初始化,头插,尾插,头删,尾删,指定位置删除,指定位置插入,查找,销毁(详解)

数据结构是什么?数据结构是两个词的集合数据:是一系列的在杂乱无章的数据的集合结构:是有条理,清晰的集合(例如目录)数据结构就是一些有条理数据的集合数据结构是计算机存储和组织数据的方式顺序表是线性表的一种那么顺序表和线性表到底是什么呢?线性表:具有相同特性的数据结构的集合例如:蔬菜:黄瓜,白菜,莲藕相同特性:蔬菜顺序表的底层是数组,但是在数组的基础上有增删查改等方法,就变成了数据结构线性表有物理结构和逻辑结构线性表:物理结构:不一定是连续的逻辑结构:一定是连续的。

2024-04-06 20:48:13 574

原创 文件操作详解(三)--fsee -- ftell -- rewind -- feof函数 -- ferror函数

文件已经结束,ferror读取的时候没有发生错误返回0,发生错误返回非0值。feof没有读到文件末尾返回0,读到文件末尾返回非0值。文件现在读取结束了,但是是什么原因读取结束的呢?feof的作用是:文件读取结束的时候,SEEK_CUR:文件指针当前位置。返回文件指针相对于起始位置的偏移量。让文件指针的位置回到文件的起始位置。SEEK_SET:文件的起始位置。SEEK_END:文件的结束位置。这是test.txt中的字符串。2.可能是读取的时候发生了错误。1.可能是遇到了文件末尾。

2024-04-04 12:43:16 356 5

原创 文件操作详解(二)

fprintf – 把数据以格式化的形式打印到指定的输出流(例如屏幕,文件等)上。fgets会读num-1个字符,最后一位会留给\0(\0是自动放入的)fscanf – 从指定的输入流(文件或键盘等)上读取格式化的数据。把数据以格式化的形式打印在指定的输出流(屏幕,文件等)上。scanf – 从标准输入流(键盘)上读取格式化的数据。从指定的输入流(文件或键盘等)上读取格式化的数据。第二个参数是每个元素的大小(以字节为单位)第二个参数是每个元素的大小(以字节为单位)第一个参数是要写入文件中的字符。

2024-04-03 21:38:22 1034 6

原创 offsetof宏定义的使用和模拟实现详解

offsetof的第一个参数是数据类型(结构体或联合体),第二个参数是偏移量(offsetof用于计算结构体和联合体的偏移量)返回值的类型是size_t(无符号整形)offsetof要包含的头文件stddef.h因为偏移量是某个地址距离0地址处的大小,所以肯定是一个正数struct Achar a;int b;int main()//0//%zd表示size_t类型,//4//对齐规则不知道的可以看我的结构体那篇//计算的都是这个元素的第一个字节的地址距离0地址处的大小。

2024-04-03 16:41:10 378

原创 文件操作详解(一)

我们用pf这个文件指针来指向某个文件的文件信息区(结构体变量),能通过文件信息区的信息可以访问这个文件,:标准输出流,大多数情况下都是输出到显示器界面的,printf输出到标准输出流中。stdin、stdout、stderr其实是FILE*类型的,他们都是文件指针。数据在内存中以二进制的形式存储,不加转化地输出到外存,就是二进制文件。,这些文件信息保存在一个结构体变量中,该结构体变量是由系统声明的。存储在硬盘上的是文件,文件分为数据文件和程序文件两种类型(根据。例如:程序运行时需要从中读取数据的文件,

2024-03-31 22:20:44 974 1

原创 编译和链接详解

是由malloc,realloc,calloc开辟的动态内存,最后是由free函数释放掉动态开辟的内存的。,正常终止main函数,也可能是意外终止(有可能是出BUG卡死,或突然没电了)将汇编代码转换成二进制指令,即汇编是编译的最后一步,会生成目标文件,词法分析就是简单地将字符分割成关键字,标识符,括号,加号,乘号等。跟据图中信息,如果用add函数去找Add函数,这就是链接错误,库可能是支持基本函数运行的库,也可能是第三方的库。静态分析:通常包括声明和类型的匹配,类型的转换等。

2024-03-31 14:22:58 521

原创 预处理详解(二)-- 条件编译 - 头文件包含 - ##和#运算符

int a = 1;int b = 2;# undef MAX //MAX的宏定义被移除了,后面无法运行了 int c = MAX(a , b);return 0;int a = 1;int b = 2;# undef MAX //MAX的宏定义被移除了,后面无法运行了 int c = MAX(a , b);return 0;int a = 1;int b = 2;# undef MAX //MAX的宏定义被移除了,后面无法运行了 int c = MAX(a , b);

2024-03-30 21:44:48 902 4

原创 预处理详解(一) -- 预定义符号与#define定义

s _ _FILE_ _ //文件%s _ _ DATE_ _ //日期%s _ _ TIME_ _ //时间%d _ _ LINE_ _ //行号%d _ _ STDC_ _ //如果编译器支持 ANSI C,那么该值为1,//否则未定义#define定义常量在预处理阶段被替换成对应的内容(stuff)// name:符号名// stuff:符号内容1000//使用reg 等同于使用 registe,还更为简洁for;;//初始化//调整//判断都可以省略不写。

2024-03-30 16:04:25 1010 2

原创 动态内存管理

要解决这个问题非常简单,只要这个指针不使用了,要把它立即置为NULL,这样再对它进行多次释放,指针为空,free函数为空,什么也不做,就不存在对同一块空间的多次释放。3.需要扩展的空间后方没有空间可以扩张,并且堆中也没有符合要求的空间给50字节扩张,所以无法正常开辟空间,会返回NULL。1.刚好后面的空间是足够存下调整后的空间的大小的。所以会在堆区重新找一份新的空间,并且大小符合要求。并且会把原有的20字节的内容拷贝到新开辟的空间中。2.后面的空间不足以装下调整后的空间。free函数释放空间的指针。

2024-03-26 23:06:01 1181 6

原创 对结构体的认识

2.位段的成员是不能是用&操作符的,所以不可以直接给位段成员scanf(输入值),只能先输入一个值放入一个变量中,然后这个变量再赋值给位段的成员。1.位段的成员名的类型必须是int,unsigned int,signed int 在C99位段的成员也可以选择其他类型。要传结构体的地址,地址压栈比较小 而传结构体过去,结构体压栈的开销比较大,会导致性能的下降。这样写是错的,结构体的大小里面再包含一个结构体+一个整型的大小。自引用:在结构体中包含自己本身的结构体类型的变量。结构体类型是一种自定义类型。

2024-03-23 21:49:03 453 3

原创 牛客的一道题(C)变种水仙花

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。例如:求出 5位数中的所有 Lily Number。

2024-03-23 17:11:13 294 1

原创 牛客的一道题(C)序列中删除指定数字

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。数据范围:序列长度和序列中的值都满足1<=n<=50。

2024-03-23 16:42:00 342 2

原创 C语言整数和浮点数在内存中的存储

比如:64位浮点数,M保存的时候可以把第一位的符号位省去,这样读取的时候可以把符号位加上去,这样就多了一位有效数字,64位的E就可以保存53位有效数字了。32位浮点数(float):第一位表示符号位S,接着的8位表示的指数位E,最后的23位表示的有效数字M。:0.5的表示为:(-1)^0 * 1.0*2^-1, S = 0,M = 1.0,E = -1,-1 + 127 = 126。浮点数V,S表示符号位,S为0,V为正数,S为1,V为负数 M为有效数字,M>=1&&M<2。

2024-03-23 12:07:31 895 1

原创 atoi函数使用与模拟实现

int atoi(const char* str),atoi是c语言中的库函数,用于将字符串转化为整数str指向要转换的字符串转化规则:跳过不可见字符(空格),直到遇到数字字符(0-9的二进制)或者’+‘,’-'开始转化,将数字字符转化成整数,直到遇到非数字字符转化停止,如果构成整数后还有其他字符,其他字符可忽略不计【头文件】stdlib.h【返回值】如果函数转化成功,函数返回转化后的整数如果str为空,或者str无法转化为整数,函数返回0。

2024-03-20 22:39:45 770 2

原创 C语言内存函数的使用与模拟实现

这里的num拷贝的是num个字节的数量。

2024-03-17 19:50:43 341 2

原创 C语言指针详解

一个内存单元就是一个字节,内存就像房间,地址就是房间号,可以根据地址找到某个内存单元(好比用房间号找房间)内存单元的编号==地址==指针如何理解编址?cpu和内存之间有大量的数据交互,所以cpu和内存之间用一条线连起来我们来理解一下地址总线,在32位机器下有32条地址线,一条地址线有两种情况(0或1,表示脉冲的有无),所以32条地址总线有2^32种情况cpu将地址的信息通过地址总线传给内存,内存拿到地址可以找到地址所对应的对象,将数据通过数据总线传回cpu的寄存器中。

2024-03-10 21:18:32 730 1

原创 strlen的模拟实现

strlen的模拟实现有3种方法:1.指针 - 指针2.递归3.计数器的方式。

2024-03-09 16:43:55 324 1

原创 C语言的青蛙跳台阶问题

/主要就是后一项b的值赋值给前一项a。但是用递归来写,会出现递推的深度太深的情况。c = a + b;//首先要使a,b为1。递归的方式:从第三项开始为前两项的和。//然后以此等到各项的值。青蛙跳台阶问题类似斐波那契数列。非递归其实就是用三个变量来写。所以推荐用非递归的方式来写。递归的终止条件:n<=2。

2024-02-26 22:08:14 323 1

原创 C语言的汉诺塔问题

【代码】C语言的汉诺塔问题。

2024-02-26 21:01:01 384 1

原创 C语言中求自幂数(水仙花数)

水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1。求出0~100000之间的所有“水仙花数”并输出。3+3^3,则153是一个“水仙花数”。

2024-02-01 21:04:35 348 1

原创 C语言中换汽水喝的问题

*你有20块钱,一块钱可以换一瓶汽水,两个空瓶可以换一瓶汽水,问20块钱可以换几瓶汽水?这个是总结的规律:total = 2 * money - 1。empty:空瓶数大于1才能够换汽水。total:总的能喝的汽水数。

2024-02-01 19:30:56 350 1

原创 C语言初阶扫雷游戏

扫雷游戏需要达到的目标:1.使用控制台实现2.游戏可以通过菜单实现继续玩或者退出游戏3.可以设置扫雷的棋盘大小为9*9的格子4.默认随机分布10个雷5.可以排查雷:1.如果该位置不是雷,就显示周围有几个雷2.如果位置是雷,就炸死结束3.把除10个雷之外的所有空格都找出来,排雷成功,游戏结束。

2023-12-15 00:00:46 1018 3

原创 C语言分支和循环语句

循环过程如下:表达式先初始化,然后判断,如果为真就执行语句,为假则退出循环。总的来说,初始化就执行一次,剩下的就是判断和调整,语句之间来回执行。表达式的值不为0,则执行循环语句,语句执行完后再继续判断是否为真,为真继续循环,否则结束。如果去掉case后面的break的话,会进入一条成立部分,把成立部分打印出来后,还会继续打印,直到结束。do-while循环第一次是先执行再判断,如果表达为真继续执行,否则就退出循环,所以do-while循环至少被执行一次。表达式1为初始化,表达式2为判断,表达式3为调整。

2023-12-03 17:29:55 947 1

原创 C语言中的猜数字游戏

time函数会返回当前的⽇历时间,其实返回的是1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的差值,单位是秒。这里的伪随机数是通过某种算法生成的,而真正的随机数是无法预测下一次的值的,rand通过对叫“种子”的基准值运算生成随机数的,而rand 函数的随机数默认的种子是1,所以想要让随机值变化,就要让种子变化。程序中在调⽤rand函数之前先调⽤srand函数,通过srand函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。

2023-12-03 15:14:12 351 1

原创 C Primer Plus

getchar()这行代码会让程序等待击键,窗口会在用户按下一个键后才关闭。这样注释的:/* 一个简单的C程序 */2.2.2 29页。2.2.1第1遍:快速概要。例如:/*hhbbjnm。2.1简单的C程序事例。

2023-11-28 23:08:34 322 1

原创 C语言中b+=a++ +c的运算

例如b=7,a=8,c=8,我们知道这个先算右边的a++ +c,在赋值给左边,这个式子等价于b=b+a++ +c,a先和c加,再和b加,最后a自己再加1,可以得到最后的结果a=9,b=23,c=8,最重要的是a是在式子里先使用,b=7+16=23,然后a再加一。

2023-11-27 09:05:17 414

原创 C语言中scanf提供了一个赋值忽略符

该占位符就不会返回值的意思就是:比如说%c会返回一个字符\,scanf会收到一个\传递给变量,而printf会输出一个\。而加上*变为%*c,结果scanf也会收到一个\,但是解析后会将会被丢弃,结果就是在输入时可以随意输入任何值,最后这个值都会被丢弃。只要把*加在任何占位符的百分号后面,该占位符就不会返回值,解析后将被丢弃。

2023-11-25 09:55:37 419

原创 【无标题】C语言中\r的作用

众所周知\r在C语言中是将光标移动到同一行的开头,但是它在vs2022中在监视和打印出来的表现是不同的,下面我们就来看一下。监视中光标在abcdef中a的下面,打印是\r 把a字母的位置给占了,就是 bcdef了。第二种和第一种一样,先打空格再打\r,空格和字母都占一个位置,\r就和第一种一样了。监视中是mbcdef,而打印中是m cdef。第四种和第三中的意思是差不多的。第三中就是先打\r再打空格。

2023-11-20 10:27:45 366 1

原创 我的编程目标

2.C语言,C加加,java,大一的时候了解一下我感兴趣的方向再往一个方面深入。1.我是一名大一学生,目前是一名小白,但我相信可以通过自己的努力学有所成。3.一步一个脚印地学习编程,这个过程不是一蹴而就的,一遍不会学两遍。4.我打算每周花30个小时学习编程。5.我最想进入B站这个公司。

2023-11-18 19:47:01 33 1

原创 C语言的学习

变量的定义变量的定义。

2023-10-27 19:44:39 38

空空如也

空空如也

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

TA关注的人

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