自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

分享记录学习的过程!

写博客一方面是为了分享所学的知识,一方面也是为了帮助自己更好的复习回顾,所以写的内容可以不是非常准确,希望多多包容,有问题可以一起讨论,一起进步!

  • 博客(34)
  • 收藏
  • 关注

原创 人生苦短,我学python之列表(中)

1.列表的嵌套2.列表中元素的顺序3.遍历列表4.range()函数5.深入理解range(x, y, z)的运行过程6.列表统计函数7.列表生成

2024-05-21 12:00:00 588 17

原创 人生苦短,我学python之列表(上)

1.列表的定义2.列表的下标3.列表的元素访问与删除4.eval()函数5. 列表元素的增加1.append()函数2.insert()函数3.extend()函数6.列表元素的删除1.del语句2.pop()函数3.remove()函数4.clear()函数

2024-05-21 11:00:00 275 12

原创 数据结构之循环队列

一.循环队列1.循环队列的介绍2.循环队列的实现这个循环队列的结构体怎么完成?rear指针的实际意义那么如何解决判满判空呢?如何让队列循环起来?3.代码1.myCircularQueueCreate()函数2.判满判空函数3.插入删除函数4.查看队首队尾元素5.释放函数

2024-05-20 12:00:00 710 24

原创 数据结构栈和队列

栈与队列--C语言实现

2024-05-20 11:00:00 894 14

原创 双向链表详解

我们一般所说的双向链表是带头循环双向链表,这里的带头更我们之前的头节点不是一回事。带头链表里的头节点,实际上为哨兵位,哨兵位的头节点种是不存放任何有效数据的,只是站在这里起到放哨的作用。哨兵位的意义:避免遍历数组时发生死循环。虽然双向链表的结构比单链表更加复杂,但是实现其实更加简单。

2024-04-18 10:41:11 997 58

原创 单链表讲解

链表的结构与火车是类似的,一节一节的,数据就像乘客一样在车厢中一样。与顺序表不同的是,链表里的每节"车厢"都是独立申请的空间,我们将这样的空间称为或者既然链表是一节一节的结点构成的,那么这样的结点是怎么连接的呢?链表中的节点一般是通过结构体来实现的,结构体中的存储着数据和下一个节点的地址,这样我们就可以访问下一个节点中的数据了。为了使用方便我们可以对其重命名。

2024-04-15 16:36:00 738 20

原创 顺序表讲解

数据结构是由“数据”和结构两词组合而来。你的游戏账号,身份信息,网页里的信息(文字,视频,图片),手机app存储的信息等等这些都是数据。在生活中,我们是有很多数据的,当我们想要使用大量的同一类型的数据的时候,通过手动定义大量的独立变量对于程序员的消耗是很大的,并且可读性非常的查,无法轻易的实现查找数据,排列数据等基本功能。可读性非常差,我们可以借助数组这样的数据结构将大量的数据组织在一起,结构也可以理解为组织这样结构的方式。数据结构是计算机存储,组织数据的方式。

2024-04-10 15:05:34 915 13

原创 文件操作讲解

在程序设计中,我们讨论的文件一般有两种:程序文件,数据文件(从文件的功能的角度来分类)

2024-04-04 13:32:40 741 10

原创 动态内存管理

但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译方式就不能满足了。C语言引入了动态内存开辟,这样我们自己可以根据情况自行申请和释放空间,就比较灵活。动态内存是计算机中一种特殊的内存,用于存储在程序运行时创建和使用的数据。动态内存通过使用堆来分配和管理内存。与静态内存相比,动态内存的大小和生命周期不是在编译时确定的,而是在运行时根据程序的需求进行动态分配和释放。

2024-03-29 14:52:57 1026 2

原创 联合与枚举

自定义类型有三种:结构体,联合体,枚举。结构体已经讲解完了,接下来我们学习联合体和枚举。

2024-03-29 09:30:26 745 7

原创 结构体讲解

位段的成员必须是int 或者unsigned int或者signed int ,在C99中位段成员的类型也可以选择其他类型位段的成员名后面后一个冒号和一个数字。int b:5;int c:10;int d:30;A就是一个位段类型那么位段A所占内存的大小是多少?答案是8.为什么呢?变量名的后面跟着一个冒号数字代表这个数字只占多少个bit位。比如int c:10,表示这个c变量占据了10个bit位。

2024-03-25 17:45:25 946 4

原创 atoi函数

如果这种非数字的字符串在前面就会解析失败,也就是所想要成功转化,这个字符串中的数字就必须在前面。返回值:如果解析失败,这个函数就会返回0(字符串中的数字字符是0也会返回0,并不一定失败)。这个函数讲“123”这样的字符串转化为了123.也就是将字符串中的整数提取出来了作为了整形数据进行返回。这个函数的作用是将str所指向的字符串进行解析得到一个整形的数据,在将其作为返回值。这个函数对字符串进行读取的时候,首先会跳过前面的所以空格字符。这个字符串中在整数字符的后面是可以包含额外的字符的。

2024-03-23 20:38:08 511

原创 浮点数在内存中的存储

当数据在内存中的大小超过一个字节的时候,这时候就有了存储顺序的问题,根据不同的存储顺序,分为了大端字节序存储和小端字节序存储。大端字节序存储:一个数据的低位字节的内容保存在高地址处,而高位字节的内容保存在低地址处,我们就将其称为大端字节序存储小端字节序存储:一个数据的低位字节的内容保存在低地址处,而高位字节的内容保存在高地址处,我们就将其称为小端字节序存储。

2024-03-23 20:38:06 1056 1

原创 C语言内存函数

strcpy是复制字符串,而memcpy就是复制内存块。memcpy会从source所指向的空间复制num个字节(不是元素个数而是字节)到destination所指向的空间。source和destination所指向的的对象的类型是不重要的,这个函数仅仅是对二进制数据的拷贝。这个函数与strcpy不同,它是不会管‘\0’的,总是精准的复制num个字节。为了避免越界。source和destination所指向的空间的大小至少应该是num个字节。

2024-03-22 20:52:37 1122 1

原创 字符函数与字符串函数

函数功能是返回字符串的长度。字符串的长度是有'\0'字符决定,它之前的字符个数就是字符串的长度。C字符串的长度等于字符串开头和'\0'字符之间的字符数.注:字符串长度是不包括'\0'的注意字符串的长度是与包含字符串的数组的大小不一样的。通过调试,我们可以发现,这个数组的类型是char[7]说明这个数组大小是7,但是字符串的长度是6。所有我们如果给【】中加上值,这个值的大小至少要是7,不能比7小不如就存不下这个字符串。那么多余的值就会被初始化为'\0'.

2024-03-22 20:52:13 914 1

原创 python讲解(4)

使用关系运算符对float类型的数据进行比较时会出现出现一定的问题。运行这个代码,在控制台会打印False,说明0.1 + 0.2是不等于0.3的。但这是不符合常理的。这是因为。控制台上会打印0.30000000000000004。而不是0.3.所以在比较浮点数时我们一般会使用差值比较的方式。只要它的差值小于我们所期望的值,我们就可以认定a和b是相等的。

2024-03-19 05:00:00 965 1

原创 python讲解(3)

python中也是可以写类型声明的,但是类型还是可以改变的。

2024-03-19 04:45:00 1581 1

原创 python讲解(2)

python

2024-03-13 09:47:18 925 1

原创 python讲解(1)

于1989年圣诞节为打发无聊的时间,开发了一个新的脚本解释程序,第一个公开发行版发行于1991年。至于为什么选中python作为语言的名字,是因为他是一位名叫Monty Python的戏剧团的爱好者。二.python的特点优雅,简单,明确python是一个下限特别低,上线高的编程语言。下限低:上手容易,特别时候小白作为第一门编程语言进行学习,通过简单的代码就可以做出实用的功能,特别容易培养出对编程的兴趣。

2024-03-13 09:47:08 872 1

原创 C语言--- 指针运算笔试题详解

解析:a是数组首元素的地址,类型为int*,+1跳过一个元素,再解引用就是第二个元素。&a是整个数组的地址,+1跳过整个数组,再强制类型转化为int*类型,-1就是数组最后一个元素的地址,解引用后就是最后一个元素。答案:2,5。

2024-03-11 20:02:08 578 1

原创 C语言 --- 指针(5)

sizeof(数组名),这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩。& 数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址。除此之外所有的数组名都表⽰⾸元素的地址。

2024-03-10 13:56:40 933 1

原创 C语言---指针(4) qsort函数

读者可以自行用上面的数进行尝试,我们会发现最大的那个数经过了一轮交换后(因为最大的数一定比它右边的数大,所以它会一直交换下去,直到最后一个位置),就到了最后一个位置,但其他的数还是乱的,所以我们要接着进行下一轮交换,但是因为最大的数已经在它该在的位置上了,这样在下一轮的交换中我们就不需要比较第九个数和第十个数了;同理后面也是如此……第九轮的时候比较一次,也就是第一个位置上的数和第二个位置上的数进行比较,第二个位置上的数确定了后,同理第一个位置上的数也应该是最小的了,所以就不用比较了。不再是张三,38岁。

2024-03-04 18:01:53 898 1

原创 C语言--- 指针(3)

在指针的类型中,我们知道有一种指针类型为字符指针这里是把一个字符串放到了pstr的指针变量里了吗?其实不是,本质上是将字符串的首字符的地址放到了pstr中。在解引用后我们会发现打印的是h,也就是将字符串中首字符h的地址存放到了指针中因为pstr的类型是char*,所以+5会跳过五个字节从而只打印了后面的world。这也证明了pstr储存的就是首字符的地址。虽然这个代码在编译的时候并不会报错,但是程序运行时会崩溃。为什么呢?因为“hello world”是常量字符串,常量字符串是不能修改的。

2024-02-27 08:00:00 1072 1

原创 C语言 --- 指针(2)

读者可以自行用上面的数进行尝试,我们会发现最大的那个数经过了一轮交换后(因为最大的数一定比它右边的数大,所以它会一直交换下去,直到最后一个位置),就到了最后一个位置,但其他的数还是乱的,所以我们要接着进行下一轮交换,但是因为最大的数已经在它该在的位置上了,这样在下一轮的交换中我们就不需要比较第九个数和第十个数了;第九轮的时候比较一次,也就是第一个位置上的数和第二个位置上的数进行比较,第二个位置上的数确定了后,同理第一个位置上的数也应该是最小的了,所以就不用比较了。指针数组的每一个元素都是用来存放地址的;

2024-02-25 12:00:00 1234 1

原创 C语言---详解问题表达式

表达式的求值部分又操作符的优先级和结合性决定。但是并不能完全决定计算顺序,这会根据编译器的不同而体现不同的计算顺序;表达式1中,在计算的时候,由于乘法*的优先级高于加法,只能保证相邻情况下,*的计算比+的计算更早,如:并不能决定表达式中的第三个乘号*比第一个加号+更早执行。所以表达式的计算顺序可能会分为两种。有人可能会想,虽然计算顺序不同,但是结果是一样的。那么这个表达式到底有没有问题呢?其实是有的。如果表达式中的abcdef不单纯是变量,也是表达式的话。

2024-02-24 10:00:00 1353 1

原创 C语言--- 操作符详解(下)

C语言中的整形运算总是至少一缺省整形类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整形,这种转换称为整形提升。整型提升的意义在于:表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。

2024-02-23 13:23:10 1146 2

原创 C语言--- 操作符详解(上)

数字系统分为三种远古时代结绳记事/石板刻线非位置化数字系统罗马数字数字化位置系统二进制 | 八进制 | 十进制 | 十六进制远古时代:在很久以前,人们不会数12345,所以当人需要对某些事情进行计数的时候,比如:上次下雨过了几天等等这类的问题,人们就只能使用结绳记事或者在石板上刻一根一根的线这样的方式进行记录.可是这样的计数方式弊端很大,数字越大越不好数.为了解决上述的问题,人们想到了更加便捷的技术方法.那就是使用不同的符号来表示不同的数字比如我们所使用的数字111虽然使用了三次数字1。

2024-02-21 15:49:59 1151

原创 C语言--- 函数递归

在C语言中,递归就是自己调用自己.以下是一个C语言的递归代码int main()\n");main();return 0;在打印完hello world之后,又重新执行main函数,又继续打印hello world无限的执行下去.但是这串代码最终会陷入死循环,导致栈溢出.(stack overflow)

2024-01-29 18:56:25 948

原创 C语言--- 指针(1)

一.内存和地址1.1内存CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中。计算机把内存划分为一个个的内存单元,每个单元的大小取一个字节。每一个比特位可以存放一个2进制的数字0或者1。一个字节空间可以存放8个比特位。为了方便CPU快速寻找到每一个空间,每个内存单元都有一个编号。在计算机中我们把内存单元的编号称为地址。。

2024-01-15 20:40:09 1004

原创 C语言---- 扫雷游戏

在写代码前,我们先想清楚,我们所写的这款游戏需要什么功能,把主体写出来,在进一步细化代码。(读者可以在我的代码上,进行补充,我写的比较简易。1.游戏菜单:玩家可以通过游戏菜单实现游戏的进行和退出。2.游戏界面3.游戏失败界面4.扫雷的棋盘是9*9的5.随机布置10个雷.6.排查雷(一):如果不是雷就显示周围有几个雷。(二):如果是雷,游戏失败。(三):扫雷结束,游戏胜利。

2023-12-25 21:19:40 936

原创 C语言--- 函数

一般我们使用使用函数的时候直接写出来即可。用红色圈出来的部分就是函数的定义画橙色线条的地方就是函数的调用。这是函数的定义放在函数的调用之前如果我们将函数的定义放在函数的调用之后,这时候就需要函数的声明。这时候发生警告,函数get_day_of_month函数未定义为什么呢?因为C语⾔编译器对源代码进⾏编译的时候,从第⼀⾏往下扫描的,当遇到的函数调⽤的时候,并没有发现前⾯有的定义,就报出了上述的警告。这时候我们就需要用到函数的声明声明函数只要交代清楚:函数名,函数的返回类型和函数的参数。

2023-12-21 19:50:22 906

原创 C语言---数组

前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。2.二维数组的创建type arr[常量值1][常量值2];比如:这两个数组中的3都表示数组有三行5都表示数组每一行有五个元素,即五列;

2023-12-18 20:32:52 837

原创 C语言---分支与循环(下)——猜数字

写一个猜数字游戏我们可以想想写出这个游戏需要什么?首先是不是要随机生成数字。然后玩家进行猜游戏,当猜错了,我们需要提醒玩家猜大了还是猜小了。当然我们还可以加上猜的次数,次数多了游戏失败。

2023-12-15 20:02:03 915

原创 C语言---分支和循环语句(上)

C语言分支和循环语句(上)

2023-12-08 17:00:19 849

空空如也

空空如也

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

TA关注的人

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