自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++中的继承

2.基类和派生类对象赋值转换1.派生类对象可以赋值给基类的对象基类的指针基类的引用。这里有个形象的说法叫切片或者切割。寓意把派生类中父类那部分切来赋值过去。2.基类对象不能赋值给派生类对象。3.基类的指针或者引用可以通过强制类型转换赋值给派生类的指针或者引用。但是必须是基类的指针是指向派生类对象时才是安全的。3.继承中的作用域。

2024-02-03 23:42:54 683

原创 C++优先级队列及反向迭代器

我们来看优先级队列的在STL中的内容其实优先级队列的底层就是使用vector实现堆的控制排序,默认是大根的排序,这个排序的方式是通过仿函数实现的,所以我们先来看一道题理解,优先级队列。力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。这道题就可以使用优先级队列来解决,我们用优先级队列的堆排序,使最大的数在堆顶,然后pop掉k-1次就是第k个大的数,这样堆顶就是我们想要的数。

2023-11-06 10:41:07 144

原创 Linux进程地址空间

当我们使用fork函数创建子进程的时候,改变了全局变量,应该会出现两个不同的地址,结果让人很吃惊两个不同的全局变量,出现不同的值,地址却是相同的,这是不是很奇怪,其实这是进程的虚拟地址的原因。

2023-10-24 22:22:18 124 1

原创 Linux权限问题

超级用户可以在Linux环境下做任何事情,不会受到任何限制,包括一些文件的管理,权限最高。

2023-07-28 21:32:16 146

原创 C++中string类的实现

在c++的标准库中我们处理字符串的时候需要使用string类,库中的使用接口都非常方便。为了让我们更加了解有关库中的相关函数,我们需要自己来实现一遍。

2023-07-22 15:20:48 1491

原创 C++ string 类(1)

迭代器在string类中相当于指针。string类是支持运算符重载。

2023-06-04 23:17:52 99 1

原创 C++ STL

STL(standard template libaray-标准模板库,不仅是一个可复用的组件库,而且。STL有很多的版本,但是使用的标准是不一样的,但是不同版本的底层实现方法是不一样的,所以我们大多数使用的是那些易于读懂和易于理解的码源和版本在这里推荐大家去读侯捷老师的书。

2023-06-01 21:54:10 58

原创 C++模板

目录1.函数模板1.1函数模板的概念1.2函数模板的格式1.3函数模板的原理1.4.1隐式实例化1.4.2显示实例化 2.类模板2.1类模板的定义格式2.2类模板的应用2.3类模板的实例化如果不使用库函数的话,当我们需要写一个Swap函数时,就需要考虑到函数的参数的类型是不同的,所以我们需要写多个重载的函数就非常的麻烦,这时候我们需要模板来完成这类函数的操作。如下的一个程序运行结果如下:我们可以看到我们不要定义函数的参数类型也可以多个数据的互换。 隐式实例化就是让编译器根据实参推演模板参数的实际

2023-06-01 21:19:58 48

原创 C++入门

/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号如果我们定义一个日期类的类,我们就可以如下定义。class Datepublic:void DInit(int year = 2002, int month = 9, int day = 10)//缺省函数_day = day;int _month;int _day;当我们实例化对象d1,d2后,我们都调用了,初始化函数,但是输出的结果是不同的。

2023-05-07 20:57:01 42

原创 C++入门

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的在上图中我们知道在C语言中库有rand函数,所以我们不可以以这个函数的名字来命名我们想要的变量,但是在c++中,我们可以使用我们想要的变量命。但是在命名空间中,如果不使用引用符号,就不可以使用。在使用中如果需要使用就需要命名空间::需要使用的函数或者变量。

2023-04-18 22:01:49 91 1

原创 二叉树建堆及Topk问题

我们知道二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。建堆的过程就是在顺序结构上存储的,顺序结构存储就是使用,一般使用数组,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储。

2023-04-03 21:35:11 114

原创 数据结构:双向循环链表的实现(C语言)

数据结构双向循环链表

2023-03-12 17:31:12 167

原创 数据结构单链表(C语言实现)

我们创建一个节点,存入需要的存放的值。比如在尾部插入一个节点或则在头部插入一个节点都需要这个函数,比较方便。在删除尾部节点时,使用了一个非常巧妙的方法,就是将prev比tail的走的少一布,这样释放掉tail指向的节点。注意我们在接下来需要改变链表头的指向的话就需要传入二级指针,这样可以通过解引用改变其指向。其中我们可以定义储存的数据类型,然后创建一个结构体,包含下一个节点的指针。这里注意我们要注意不要改变链表头的指向,我们就不需要使用二级指针。如果该链表是空的,我们就将链表头指向创建的节点。

2023-02-27 21:26:52 153

原创 动态内存管理(C语言)

我们先来看一下malloc函数的介绍这个函数就是在堆区开辟指定的大小字节数的空间,然后返回指向这块空间的指针。1.如果开辟成功,则返回一个指向开辟好空间的指针。2.如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。3.返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。4.如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。

2023-01-17 22:22:17 68

原创 C语言实现简易通讯录

实现一个通讯录:通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1.添加联系人信息2.删除指定联系人信息3.查找指定联系人信息4.修改指定联系人信息5.显示所有联系人信息6.清空所有联系人7.以名字排序所有联系人。

2023-01-13 12:53:54 1610

原创 字符函数和字符串函数 (C语言)(2)

介绍相关字符串函数及字符函数,并模拟实现(C语言)。

2023-01-11 12:32:12 90

原创 字符函数和字符串函数 (C语言)(1)

介绍一些关于字符串函数的功能及实现方法

2023-01-10 12:34:07 81

原创 数据在内存中的存储

在C语言中包含多种数据类型,如int ,short, char ,long ,long long,double,float。

2023-01-04 12:51:50 55

原创 C语言实现L1-025 正整数A+B

这里我们注意只要我们读到的不是换行,我们就可以一直读,我们先假设输入的两个字符串是数字的话,那么对应的a,b就为0,如果不是那么就是-1。如果输入的是空格的话,我们就让flag由0变为1,进入下一个字符的输入和判断。我们先创建一个循环不停的从键盘上获取字符,并不断判断是否为数字,知道我们读到空格,再获取第二数字即可。在开始写这道题之前我们需要先了解一下isdigit函数,这里我就推荐一篇别人的博客来了解一下。当然除了判断是不是数字的函数,也有判断是否为字母的函数isalpha。

2022-12-20 08:23:59 290

原创 c语言实现L1-016 查验身份证

这道我们的思路是先将权重存入整数类型的数组,校验码存入字符类型数组。之后再创建一个变量,放入身份证号码,当然也是字符型数组,这样方便我们之后比较。我们之后就设置一个flag1和flag2用来分别判断身份证号码是否全为数字,和最后一位是否满足校验码中的字符。这里我们注意只有计算出Z后对应的校验字符是否为输入的身份证号码的最后一位,这里不太好理解,需要我们注意。

2022-12-15 19:22:00 1639 1

原创 C语言实现L1-009 N个数求和

(2)用递归的方法:这样可以节省代码量,但是思路是一样。2.写一个函数求出分子和分母的最大公约数,进行化简。求最大公约数,我们用辗转相除法,可以用两种方法实现。在最后我们要注意题目的输出要求,也是本题的易错点。我们将输入的分数的分子看成a,分母看成b。1.将输入的数据全部进行通分。(1)非递归的方式:代码如下。可以参考我往期的博客。3.按要求进行输出。

2022-12-14 17:13:52 617

原创 c语言实现L1-003 个位数统计

先将输入的数看成字符串存入数组中,我们知道通过Ascii表的转换知道,字符数字减去字符0就是十进制的数,我们再创建一个数组存入每个数重复的次数。再历遍整个数组的时候减去字符0,放入C中,这样c的取值范围就是0到9了,这样创建的另一个数组对应的值就可以加1了。我们先求出数组的长度,这样就可以用for循环历遍整个数组,

2022-12-12 15:25:22 1062

原创 c语言实现倒置字符串

先设置一个指针,让指针指向的内容只要不是空格和结束标志我们,就让这个指针往下走,直到指向空格位置就停下,那我就先设置一个开始指针start,这样我们就再传参进入这个函数即可。所以我们做这道题的思路就是先将一句话每个单词逆序,之后再一个一个单词的逆序,这样就实现了让每个单词逆序。此题是将一句话的每个单独的单词分开,注意最后的一个单词的句号是不逆序的。这道题与单纯的字符逆序不同,我们看这道题的输入和输出。再逆序之后我们就需要逆序每个单词,我们先看如何实现的。这里我就不介绍实现这个函数了,可以看我往期的博客。

2022-12-10 20:28:29 405

原创 位移操作符与位操作符超详解(c语言)

超详细,含图解,简单容易理解,让你瞬间明白,进来看看吧!

2022-11-12 21:31:32 1026

原创 C语言实现简易扫雷游戏(最后附完整码源)

我们写入一个循环,如果是没有排完我们就判断,如果排完我们就结束,首先是判断输入的界面的坐标是否合法,如果是,就判断是不是被排查过了,如果是的话,就回到判断。我们将创建两个比原要的二维数组多两行两列,这样在排查一个数时,要判断周围的8个数,如果是原本的数组在检查最外面一圈是,如果是检查周围8个数时,可能会发生数组越界,这样会容易产生bug。这里我们就用随机数的方法来随机在数组中放入地雷,如果数组里存放的是字符0,我们就放入字符1,代表地雷,在再将地雷数递减。好了,我们在里面放入地雷了,就是在mine数组里,

2022-11-10 23:08:37 753

原创 C语言实现三子棋

当我们输入就可以通过switch进入case 1的内容,就可以进入game()函数,从而进入游戏;我们先创建一个数组来存放字符,棋子可以用 '*' '#' 来代替,这样创建一个可以存放九个字符的二维数组即可,下的棋子就使里面对应的元素变成棋子字符,那么我们先初始化一下这个棋盘board,在此之前,我们在头文件里面定义行和列的数目。注意返回的值我们就取玩家和电脑的棋子类型,这样就容易后期的判断,中间还有一种情况就是平局,也就是棋盘被下满了,这时我们在函数外面写一个判断棋盘是否满的情况的函数,如下。

2022-11-08 21:41:53 478 5

原创 一维数组与二维数组的认识

在相同变量在一起使用的使用时,可以将它们放入数组中集中存放,在使用的时候就可以根据数组下标的具体定位来取出想要的元素。

2022-11-07 22:29:05 1045

原创 实现字符数组倒序打印(C语言)

我们先使用指针变量来实现函数的接收,求出字符串后,就让第一个字符放到创建的临时变量中来,再使数组中下标最后的一个等于第一个字符。再使最后一个字符串变成 '\0' 让接下来的字符串判断可以跟精准,实现递归的限制条件。先看代码,首先先定义一个求字符串长度的函数,其实这里可以使用库函数自带的函数来求只需要引入对应的的头文件即可。接下来就是编写递归函数了,看下面一段代码。接下来进入递归就可以实现字符倒序。这是不使用函数递归的方法来实现数组的倒序,比较简单,与使用递归的函数的思路大同小异。

2022-11-05 23:02:20 1392 1

原创 汉诺塔(C语言实现)

当盘子数为n时,则需要的计算次数为2^n-1,所以使用递归实现的汉诺塔问题如果解决盘子数多的时候,计算机需要很多次计算才可以出结果,举个例子,如果盘子数为64时,计算这个问题计算机需要几百万年的时间。都是将n-1的盘子放在第二盘子上,再移动到第三个盘子上。再进行函数递归即可。首先我们来看什么是汉诺塔,这是我在百度看到关于汉诺塔的问题。我们先写一个move函数,就是打印柱子之间的移动的过程。函数的主体部分,我们知道,计算机就在不断地计算。

2022-11-03 12:19:13 600 1

原创 实现几个简单的函数递归例题

进入主函数,我们先创建一个数组来存放字符串,写一个函数my_strlen将arr数组传入,因为数组名是数组地首元素的地址,所以我们用指针变量来接受。用解引用地方法来判断第一个字符为\0,如果不是的话就让指针变量+1,来判断下一个字符是否为\0,这样就进入循环,写一个递归。该函数不需要返回任何值所以我们先让返回值为void类型,这时候我们就需要使用用到递归的思想了,首先我们先输入一个数,在写一个打印的Print的函数,再定义一个Print的函数。这个递归很简单就是再每次地进入函数让每次的数-1即可。

2022-11-03 11:12:04 199

原创 C语言编写一个猜1~100的数字游戏

这个函数在开始阶段进行菜单打印,因为后面是用while进行循环,所以我们需要用0或1来判断是否要进行游戏,如果在进行一次游戏之后我们如果选择继续游戏的话,这样可以选择1来继续进行游戏,如果不想玩的话可以选择0,直接退出了while,这个部分很简单。先看代码,首先从主函数出发,先进行do while 循环,所以在游戏开始之前都会进行一次循环,从第一个代码开始我们需要打印一个菜单函数,首先需要去定义一个菜单函数。直接写一个while循环进入,让游戏每次猜错之后可以继续进行下去,直到猜对之后就直接跳出。

2022-10-28 22:13:15 2602

原创 辗转相除法求两个数的最大公约数

将n的值赋给m,将k的值赋给n。这样每次就可以将余数赋给除数,此循环当m被n整出时就结束了,所以输出的就是n,也是两个数的最大公约数。先存入两个整数,假如m是18,n是24.

2022-10-27 10:53:45 427

原创 c语言实现二分查找

第二行表示的是计算数组中有多少个元素,这样方便定义数组中的最高位地址和最低位地址,上面这段代码功能是在确定目标数key之前不断缩小查找范围的作用,直到找到目标数。第一行表示中间元素,这样计算出来就可以把数值分为两半。这是实现二分查找的代码段,首先开辟十个数组,上图是我对二分查找的理解。用C语言实现二分查找。最后再进行循环嵌套。

2022-10-15 21:56:15 466

空空如也

空空如也

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

TA关注的人

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