自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 项目:贪吃蛇实现

头文件 snake.h。

2025-05-31 20:47:44 155

原创 超详细的双向链表指南

双向链表的节点结构: 数据+指向后一个节点的指针+指向前一个节点的指针。创建一个头文件进行函数的声明,接下来带你了解各个函数的创建。单链表:不带头单向不循环链表。双向链表:带头双向循环链表。

2025-05-30 18:11:02 250

原创 超超超详细的链表知识(附完整代码)

链表也是线性表的一种,链表在物理结构上不连续,在逻辑结构上连续链表由一个个节点连接节点由哪些部分组成数据指向下一个节点的指针定义链表节点的结构int date;//指向下一个节点的指针。

2025-05-29 23:24:28 867

原创 c语言 预处理

C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。1 _FILE__ //进⾏编译的源⽂件2 __LINE__ //⽂件当前的⾏号3 __DATE__ //⽂件被编译的⽇期4 __TIME__ //⽂件被编译的时间5 __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义 1。

2025-05-28 10:48:53 687

原创 初阶数据结构-顺序表及通讯录的实现

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使 ⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。案例:蔬菜分为绿叶类、⽠类、菌菇类。线性表指的是具有部分相同特性的⼀类数据结构的集合概念:顺序表是用一段物理地址连续的存储单元依次存储数据的线性结构,一般情况下采用数组存储。

2025-05-27 09:37:16 613

原创 c语言文件

我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出 操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念,我们可以把流 想象成流淌着字符的河。缓冲⽂件系统中,关键的概念是“⽂件类型指针”,简称“⽂件指针”。每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名 字,⽂件状态及⽂件当前的位置等)。在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE*的指针变量指向该⽂件,也相当于建⽴了 指针和⽂件的关系。

2025-05-26 08:15:01 939

原创 动态内存管理

但是上述的开辟空间的⽅式有两个特点:• 空间开辟⼤⼩是固定的。• 数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知 道,那数组的编译时开辟空间的⽅式就不能满⾜了.C语⾔引⼊了动态内存开辟,让程序员⾃⼰可以申请和释放空间,就⽐较灵活了。

2025-05-25 09:21:56 1787

原创 gitee push失败报错git did not exit cleanly (exit code 128)的解决办法

如图博主昨天上传gitee时push失败,博主尝试了好多方法、重新新建文件夹提交、重新创建仓库、甚至卸载了小乌龟重装了一遍。所为和博主遇上相同问题的只需要换个网络上传代码就可以解决问题了。检查到最后发现是校园网出手了(难绷)

2025-05-24 12:56:51 276

原创 超详细的结构体知识

在用struct定义一个结构体后,就诞生了一种新的数据类型,如前面定义的Rational、Date、Student都是自定义的结构类型,它们的名字就是数据类型标识符。这些标识符如同int、char、float、double一样,具有相同的地位,都表示一种数据类型。结构变量的定义和int变量的定义的方式是一样的:结构类型标识符 结构变量名在c语言中,定义结构变量时,结构类型标识符的前面还需加上struct关键字。结构变量在定义的同时可以对它们进行初始化:结构类型标识符 结构变量={初始化列表};

2025-05-24 12:48:12 973

原创 c语言字符函数与内存函数

1 字符串以'\0'作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包含'\0')1 第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字 ◦。3 ⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。3 第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字。2 会将源字符串中的 '\0' 拷⻉到⽬标空间。2 参数指向的字符串必须要以 '\0' 结束。2 第⼀个字符串等于第⼆个字符串,则返回0。1 源字符串必须以 '\0' 结束。1 源字符串必须以 '\0' 结束。

2025-05-23 10:51:15 367

原创 回调函数与qsort函数详解

如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。因为红色框中的代码,只有调用函数的逻辑是有差异的,我们可以把调用的函数的地址以参数的形式传递过去,使用函数指针接收,函数指针指向什么函数就调用什么函数,这里其实使用的就是回调函数的功能。第13讲中我们写的计算机的实现的代码中,红色框中的代码是重复出现的,其中虽然执行计算的逻辑是区别的,但是输入输出操作是冗余的,有没有办法,简化一些呢?1 指向要排序的第一个元素的指针(地址)

2025-05-23 10:43:13 409

原创 c语言冒泡排序

【代码】c语言冒泡排序。

2025-05-22 09:00:06 343

原创 关于c语言指针的详解(下)

数组名是数组首元素的地址但有两个例外:1 sizeof(数组名),这里的数组名表示的是整个数组,计算的是整个数组的大小2 &arr这里的数组名也表示整个数组取出的是整个数组的地址(整个数组的地址,虽然地址与数组首元素地址相同,但&arr+1时跳过的是整个数组)除此之外所有的数组名都是首元素地址1 数组就是数组,是一块连续的空间,可以存放一个或多个数据2 指针变量是一个变量,是可以存放地址的变量数组和指针不是一回事,但可以使用指针来访问数组why因为数组在内存中连续存放。

2025-05-22 08:55:48 1202

原创 关于c语言指针的详解(上)

1.内存划分为一个个的内存单元,每个内存单元的大小是一个字节bit 比特位Byte 字节 1Byte=8bit内存单元的编号=地址=指针。

2025-05-21 09:20:29 1110

原创 c语言函数递归详解

递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰int main()main();//main函数中⼜调⽤了main函数return 0;上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问 题,代码最终也会陷⼊死递归递归的思想把⼀个⼤型复杂问题层层转化为⼀个与原问题相似,但规模较⼩的⼦问题来求解;直到⼦问题不能再 被拆分,递归就结束了。所以递归的思考⽅式就是把⼤事化⼩的过程。递归中的递就是递推的意思,归就是回归的意思,接下来慢慢来体会。

2025-05-21 09:14:23 427

原创 关于你不知道的位操作符(^、&、|)的小知识

例:假设在C语言中,有两个整数变量a = 12和b = 5,表达式a & b的结果是什么?例:假设在C语言中,有两个整数变量x = 9和y = 3,表达式x ^ y的结果是什么?当两个数的二进制表式中没有同一位置同时为1的情况时,按位或的结果就等于它们的和。n=n&(n-1)这个表达式可以把n的二进制序列中最右边的1去掉。同理第八行a=a^b^a=a^a^b=b。输出 为 0 1 0 0=4。9的二进制 1 0 0 1。3的二进制 0 0 1 1。输出为1 0 1 0=10。输出为1 1 0 1=13。

2025-05-20 10:31:25 469

原创 你一定需要知道的数组知识

数组是⼀组相同类型元素的集合;* 数组中存放的是1个或者多个数据,但是数组元素个数不能为0* 数组中存放的多个数据,类型是相同的维数组创建的基本语法如下:type arr_name[常量值];存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型• type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以⾃ 定义的类型• arr_name 指的是数组名的名字,这个名字根据实际情况,起的有意义就⾏。

2025-05-20 10:26:10 1233

原创 关于初学最简单的找素数方法的思考

判断一个数是否为素数,当被除数与除数确定后,还要进行判断,数学上结果肯定是我们自己判断(它是素数与否)1、定义了三个变量,i,j,flag,为什么要定义后两个变量只定义i与j不行吗。即被除数与除数,当这两个自由度被确定后,我们显然知道被除数是否是素数。我们想打印的是素数,但在两个变量的情况下我们只能打印非素数的数。这样改就行了,所以问题来到了为什么要定义变量flag。所以我们还需要定义一个flag来表示判断结果的真假。首先大致思考一下我们要定义几个变量。()/()=结果(商)()/()=结果(商)

2025-05-19 18:31:37 169

原创 c语言switch语句

原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。所以在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实 际需求的就可以。

2025-05-19 18:28:36 436

原创 printf和scanf的占位符

上⾯所有占位符之中,除了 %c 以外,都会⾃动忽略起⾸的空⽩字符。%c 不忽略空⽩字符,总是返 回当前第⼀个字符,⽆论该字符是否为空格。如果要强制跳过字符前的空⽩字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表 ⽰跳过零个或多个空⽩字符。scanf() 常⽤的占位符如下,与 printf() 的占位符基本⼀致。• %Lf : long double 类型浮点数。• %lf : double 类型浮点数。• %f : float 类型浮点数。• %s :字符串。

2025-05-18 22:43:54 395

原创 printf函数与scanf函数

为了防⽌这种情况,使⽤ 读⼊字符串的最⻓⻓度,即写成 %[m]s ,其中的 %s 占位符时,应该指定 [m] 是⼀个整数,表⽰读取字符串的最⼤⻓度,后 ⾯的字符将被丢弃·另一类是格式控制符,以%开头,由%和格式字符组成的字符串,如%d,说明输出数据的类型、数据长度和小数保留位数等。scanf在你输入数据时要按照你写的方式来,比如说scanf("%d %d",&a,&b),你就得输入3 4,3和4之间必须有一个空格,同理scanf("%d,%d",&a,&b)输入3,4。输出⼩数时,有时希望限定⼩数的位数。

2025-05-18 22:40:44 463 1

空空如也

空空如也

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

TA关注的人

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