自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 虚拟机centos_7 配置教程(镜像源、配置centos、静态ip地址、Finalshell远程操控使用)

有许多开源的镜像站,里面维护了许多镜像源,可以下载所需要的源。第七步:点击完成之后,需要等待几分钟,不要输入任何东西,直到以下界面出现。Minimal为最小版本,无图形化界面,安装包也比较小,相对下载速度较快。输入以上命令后会出现网卡信息,找到ens33网卡下的ip地址,并记下该ip地址。第三步:点击浏览,找到刚刚下载的镜像源 .iso压缩包,之后点击下一步。修改完成后,按esc键,输入 “:wq” ,按回车键,进行保存并退出。下载需要一段时间,耐心等待一会后,打开安装位置(或更换位置),

2024-09-17 17:43:27 1047

原创 【数据结构初阶】二叉树与堆(一)

一个树可分为根和子树(度>=0)。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MR1fWQnt-1722609222678)(https://i-blog.csdnimg.cn/direct/aa877a42de814202a6967bb7f5cdd85c.png)]

2024-08-02 22:48:23 943 1

原创 【数据结构初阶】详解:实现循环队列、用栈实现队列、用队列实现栈

如果popst内的数据为空,就将pushst内的数据导入popst中,此时从popst中按栈的顺序出数据时,所出顺序即为队列的出数据顺序。我们开始就说过,循环队列的数据储存的数量是固定的,为了方便讲解,我们这里设队列可储存4个数据。将不为空的队列中的队尾数据之前的所有数据导入为空的队列中,而原队列中只剩下要删除的元素。与队列的区别:循环队列的空间大小是固定的,且队尾连接队头形成循环。已经入了4个数据了,想要再入数据就要先出数据,把空间空出来。入的数据与出的数据的顺序相同,符合队列先进先出的逻辑。

2024-08-02 09:58:01 981

原创 【数据结构初阶】详解 环形链表:链表的带环问题(判断是否带环、环形链表的入口点)

2、当N为奇数时,设环的周长为C,距离变化为-1时,即fast快slow一步,那么第二轮追击时二者间距为N=C-1,那么若C-1为偶数,第二轮可以追上;由上可得,本题一定要使用快慢指针的追击相遇,那么fast与slow有速度差,根据1.1的证明,我们还是使用速度为二倍关系比较容易。得到等式 2L=(x+1)*C-N,等式左边为偶数,当N为奇数, C-1为奇数即C为偶数时,若不带环,fast先到达尾节点,结束,此时fast一定在尾,slow在中间,不会相遇。1、当N为偶数时,N最终能够变化为0,一定能相遇。

2024-07-14 10:10:02 860 1

原创 【C++初阶】与C相比,C++多出来简单又好用的语法(命名空间、输入输出、缺省参数、函数重载)

其中,namespace是关键字,后面接命名空间的名字,在来一对花括号即可。{}中为命名空间的成员。命名空间中可以定义变量、函数、类型等。如下图:命名空间的本质是定义一个域,根据不同的域里面的变量可以定义同名变量,来解决命名冲突。缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参,缺省参数分为全缺省和半缺省参数。(有些地方把缺省参数也叫默认参数)全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++⽀持在。

2024-07-08 17:27:22 1004 3

原创 【数据结构】经典链表题目详解集合(反转链表、相交链表、链表的中间节点、回文链表)

题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。故回文链表综合了 反转链表与链表的中间节点,了解了这两个题目方法后,我们只需写进行比较的代码。题目:给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。题目:给你单链表的头结点 head ,请你找出并返回链表的中间结点。题目:给你一个单链表的头节点 head ,请你判断该链表是否为。注:根据一个节点只能有一个next,相交链表一定是Y型的。

2024-07-07 21:27:52 716 1

原创 128:忆往昔,迎春来

我将学习与写博客给平衡下来是有一段适应时间的,起初,总是说学习完之后没时间写博客,只是偶尔感觉有必要写的时候才写,后来我意识到就是懒,一直待在自己的舒适圈,所以我现在是学习到一节知识点,就写一篇博客,我感觉复盘一下是非常有必要的。首先就是从正式的第一篇博客开始到现在,我的博客内容编写能力进步了很多,我现在回看第一篇技术博客,无论是文章内容,还是结构设置,其实能明显感觉到稚嫩,而现在所写的博客才算是正式的入门。我敲过的最长的程序,就是扫雷游戏了,其实也是跟着老师敲的,但敲出来之后是很有成就感的。

2024-04-01 23:41:14 480 2

原创 【C语言】联合体、枚举: 联合体与结构体区别,枚举的优点

比如,现实生活中,星期、月份、性别、颜色等都是可以一一列举的,这些数据的表示可以使用枚举。但编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用一块内存空间。联合体的所有成员共用同一块内存空间,那么联合体的大小至少是最大成员的大小。这些可能取值都是有值的,默认从0开始,依次递增1,也可以赋初始值。联合体是由一个或多个成员构成,这些成员可以是不同的类型。给联合体的一个成员赋值,其他成员的值也会跟着变化。如下面的例子:结构体的地址与成员地址相等。花括号里面的内容是枚举类型的可能取值,也叫。

2024-03-31 16:49:02 648

原创 【C语言】结构体详解 (二) 内存对齐、结构体传参

上一篇博客,写了结构体变量的创建、初始化和声明等内容,今天的这篇博客来带大家深入理解结构体的知识点。希望大家多多支持。正文1、结构体的内存对齐首先,抛一个问题:结构体的大小如何计算?要知道这个题的答案,首先要了解结构体内存对齐。1.1、对齐规则1、结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处2、其他成员变量要对齐到某一个数字(对齐数)的整数倍的地址处3、结构体总大小为最大对齐数的整数倍。

2024-03-29 16:47:14 1248 5

原创 【C语言】结构体详解(一)

先引入我们所熟悉的类型:char、short、int、long等等,这些是C语言提供的内置类型,但我们用单一的内置类型无法描述复杂的对象。结构的每个成员可以是不同类型的变量,如:标量、数组、指针、或其他结构体。为了解决这个问题,C语言增加了结构体这种自定义的数据类型,让程序员可以创造出合适的类型。如,描述一个学生,需要描述其名字、年龄、性别、学号等;顾名思义,顺序初始化是按照结构体成员的顺序进行的初始化。一个结构体中包含:结构体关键字、名字、成员、分号。p->name : 相当于 (*p).name。

2024-03-27 19:56:12 606 6

原创 【C语言】数据在内存中的存储

正文1、整数在内存中的存储整数的二进制表示方法有:原码、反码、补码。其中对有符号整数来说:这三种表示方法都分为符号位和数值位两部分。数值位的最高一位是符号位,用0表示‘正’,1表示‘负’。正数:原码、反码、补码均相等,三码合一。负数:原码:直接将数值转换为二进制,得到的就是原码反码:原码的符号位不变,其他位按位取反补码:反码+1整数在内存中以补码的形式储存。2、大小端字节序补码在存储时存在大小端问题2.1、什么是大小端?

2024-03-27 14:02:59 829

原创 【C语言】内存函数详解

图1: dest为高地址,在src前面,在对src、dest进行交换时,如果将src从 前-->后 的顺序(正序)进行交换时 ,换到3时源数据被覆盖,需要将src从 后-->前 的顺序(反序)进行交换。图2: dest为低地址,在src后面,在对src、dest进行交换时,将src从 前-->后 的顺序(正序)进行交换。memcpy与strcpy 是有相同点的,我们已知strcpy函数是用来对字符串进行拷贝的,且只能进行字符串的拷贝。所以是将12345,拷贝到34567的空间中,覆盖了原来的数据。

2024-03-23 00:31:00 1430 3

原创 【C语言】从将十进制数转换为七进制数到转换为k进制数

由此,为了联系数字逆序输出的知识,我们得到这样的一个思路:依次输出余数,得到一个反序的数,然后在将这个数倒序输出,就得到了该十进制数对应的七进制。将十进制数一直除以7,得到的余数倒着输出,即为其对应的七进制数。转换为k进制,只需要加一个输入值,并将所有的7改为k即可。数学中将十进制转换为七进制是如何求得呢?增加了一个变量n来控制其在哪一位上。

2024-03-21 19:09:29 385 1

原创 【C语言】库函数中的字符函数与字符串函数

1、字符分类函数2、字符转换函数。

2024-03-20 18:13:50 283 1

原创 【C语言】库函数strstr的模拟实现

赋给指针begin的起始地址为 str1, 使得指针s1从begin开始移动,同时使得s2从str2开始移动,将s1指向的内容与s2指向的内容进行比较, 如果s1 不等于 s2, 则使begin++,s1从begin指向的位置开始向后移动,而s2返回起始位置(str2)开始移动,继续进行一一比较。即在字符串str1中查找字符串str2,并返回在str1中第一次遇到str2时的地址。说明:将两个字符串中的字符进行一一比较,找到要查找的字符串。有这种算法,在一个字符串中找到另一个字符串,代码更高效。

2024-03-20 17:22:34 720 1

原创 【C语言】库函数strcpy的模拟实现及优化

如上图:strcpy函数的 参数为 char*类型,返回类型为char*strcpy函数: 将源字符串拷贝到目标空间中。

2024-03-19 14:04:39 219 1

原创 【C语言】库函数strlen的模拟实现

根据Cplusplus官网说明,如上图:strlen函数的参数为char*类型,且*str不可改变;返回类型为size_t 无符号整型。因为s 指向的地址一直在改变, 需要将 其首字符的地址存到 ret 中。知道了strlen函数的功能,参数和返回类型,就可以进行模拟实现了。strlen函数: 计算字符串的长度。

2024-03-19 13:00:22 336 1

原创 【C语言】深入理解指针(二)

sizeof(数组名) : 当sizeof中单独放数组名时,其中的数组名代表的是整个数组的地址,计算整个数组的大小。p+1中存的是arr[1] 的地址, *(p+1)后得到arr[1] =2(数组第二个元素)如果直接打印出数组首元素的地址,或整个数组的地址时,打印出的结果是没有区别的。&数组名 :其中的数组名代表整个数组的地址,取出整个数组的地址。| 指针- 指针 | = 得到两个指针之间的元素个数。2.3 首元素地址与整个数组的地址的区别。&arr[0] —— 首元素的地址。1.1 指针+-整数。

2024-03-18 15:19:06 239

原创 【C语言】深入理解指针(一)

就像为了准确找到房间,我们将房间编号,那么,我们为了方便查找内存,我们把每个内存单元设置一个地址,这样,CPU就能快速找到一个内存空间。引子:来类比一下生活中的房间,为了方便管理,我们把一栋房子分成一个一个的小房间,而为了查找房间能够快速方便,我们把房间进行编号。在计算机中,我们把内存单元的编号叫做地址;内存是计算机中的一个硬件单元,计算机上的CPU处理数据时,数据从CPU上读取,处理后的数据也会放在内存中。正经讲法:把a的修改交给了p来操作,这样对a的修改就多了一种途径,写的代码就更加的灵活。

2024-01-29 07:00:00 1088

原创 斐波那契数(递归与非递归两种写法)

在计算第40个斐波那契数时,第三个斐波那契数被反复计算了39088169次 ,若递归层次越深,冗余计算就会越多。那么,来用我们最初的想法。这段代码是正确的,但当你输入一个相对较大的数,如 50,电脑要运行几分钟才能计算出结果,效率非常低,这个原因很简单,前两项为1固定,之后每一项依次为c,使用while循环来计算第n项斐波那契数, 计算量就大大减少了。我们已知,在斐波那契数列中,所求=前两项之和,如此,我们可以创建一个变量c,c=a+b。若根据上图,我们很容易被引导用递归的方法来写,进而写出这段代码。

2024-01-28 13:25:31 517 1

原创 求整数在内存中1的个数(三种方法)

00000000 00000000 00000000 00000001 (1补码)(这里%2后的值即为其二进制数,每当n%2=1,count++,即1的个数加一。若按位与之后的结果为1,则13的二进制的最后一位是1,进行count++每进行一次n&(n-1)后,n就少一个1,直到n=0时,循环结束。按位与之后结果为0,最后一位不是1,不进行count++.数据在打印时是原码,在内存中存放的是补码。循环%2,当n=n/2=0时循环结束)补码:1010(有2个1)以13为例:补码为1101。

2024-01-27 13:06:27 386

原创 不创建临时变量,实现两个数的交换(奇葩面试题)

但这段带码不合适:若a、b均很大且刚好未超出整型范围,但a+b超出了整型范围,就会导致数据丢失,不适用于全部的数。当然,除了题目的特殊要求,我们一般写这道题时还是用创建变量的方法来做,这种方法的效率更高,代码的可读性更强。实现两个数交换,我们最常用的应该就是创建第三个变量,进行交换。用异或(^)来求,上代码。

2024-01-26 22:09:54 172 1

原创 扫雷游戏(C语言版)

注意:因为在排查坐标周围雷的个数时,棋盘四周的坐标不足8个,因此在设置棋盘时为11*11棋盘,比原本的棋盘多一圈,并将这一圈设置为‘0’(非雷),便于排查。show棋盘:用来排查雷(输入要排查的坐标后,在show棋盘上显示该坐标周围雷的个数)mine棋盘:用来保存布置好的雷(棋盘中全为字符‘0’、‘1’,其中‘1’为雷)注:这里的x、y 的范围均在1~9,意为在11*11的棋盘中的9*9内布置雷。3、排查雷(输入要排查的坐标,后显示其周围雷的个数)2、布置雷(随机在棋盘上生成10个雷)

2024-01-26 10:50:05 382 1

原创 二分查找(折半查找)

因为 5

2023-12-08 22:30:57 294

原创 输出100~200内的素数(C语言)

若不为0,说明 2 ~ i-1 内所有的数都不能被整除,则flag值不变,flag = 1,此时i为素数,输出i。例如:如果定义一个数字为i,那么它不能被2~i-1内的所有数整除,如此就需要循环语句,使i分别与2~i-1内的数字相除取模。像上面的代码意思是当 i 只是不能被 2 ~ i-1中的一个数整除,然后就直接输出了,没有循环到所有的数。在编写这个代码的过程中,我发现了好几个我存在的错误和问题,这篇博客来和大家分享一下如何用C语言写这个代码及我所出现的问题。1,把a和flag定义在了for循环的外面。

2023-12-03 14:28:39 371

原创 C语言——限定宽度

输出结果为" 123"。123只有三位,但限宽为5,在其前面补了两个空格。通常用%nd(n指任意整数)表示。当其不够最小宽度时,打印时会在。注意:小数点也算一位,“ 123.2”共6位,前面补了一个空格。若想要在其最右边补空格,只需添加一个负号。如 %6.1f, 表示限定宽度为6位,保留1位小数。2)若输入的值超过5位,则按原数打印。例如:%5d,表示占位符的最小宽度为5位。1)若输入的值不够5位,打印时在。限定宽度可以与限定小数点位数连用。

2023-11-29 22:47:55 709 1

原创 switch分支——穿透

注意:在使用switch分支时,case后面的常量必须是整型常量,字符也可以,如'a',毕竟经过ASCII转化后也是整数,但一定不能是字符串。(欢迎各位大佬来指正)是指在执行完一个case分支后跳出switch语句,那么如果一个case分支中没有break语句,那么程序执行时会进行。即同时执行多个case分支中的语句块,直到遇到下一个break语句。用穿透可以将代码简化许多,当然,这段代码也可以用if分支来写。switch(表达式){

2023-11-23 18:59:00 520

原创 偶遇编程

就是因为选的计科这个专业,在高考后的暑假中看了许多有关计科的视频,因此我认识了C、C++、python、java等编程语言,又认识了蓝桥杯、传智杯、天梯赛ACM等竞赛,我在想:既然要学习编程,从哪里入手呢?继续搜,刚开始是在哔站上有up主推荐白纸编程这个软件,我就学了一会儿,又发现哔站上有C语言教程,但看不懂,于是学习的新鲜感没了,荒废……嘿,大家好,我是一名新人,是计算机科学与技术专业在读的大一新生,来自河南南阳,当初是在和父母的商量下报了计科,采取保专业的原则,我来到了新疆。

2023-11-20 18:56:01 59 1

空空如也

空空如也

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

TA关注的人

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