- 博客(29)
- 收藏
- 关注
原创 C++——命名空间、输入、输出
在我们接触C++之前,C语言中有时候会有使用全局变量,全局变量在使用过程中可能会发生冲突,这个冲突有时会是我们与库之间的冲突,有时又会是我们自己定义的之间的冲突,那么这时候命名空间的出现将很好的解决这个问题,下面我们来学习一下这个知识点。命名空间我们从这个定义的名字就不难看出,这是将标识符的名称进行本地化,也就是为这些变量建立一个域,来限制其作用的空间,而namespace关键字就是针对这一情况。当在传实参的时候不传使用默认参数,当你传参时,则用传过去的参数。另外函数缺省参数写在声明中。
2023-08-10 22:55:13
299
1
原创 二叉树——(下)
当两棵树根节点与根节点值相同,左节点与左节点值相同,右节点与右节点值相同。如果一个二叉树每个节点都具有相同的值,说明为一个单值二叉树,否则返回空。在学习了二叉树的基本知识后,我们来练习一些题目来增强对其的理解。在一棵树中找另一棵树是否为其子树。二、二叉树查找值为x的树。
2023-05-25 23:42:11
137
1
原创 数据结构——二叉树_(上)
学习二叉树之前我们首先要对树有一个认识,树是一种非线性结构,它是由n(n>=0)个有限节点组成的一个具有层次关系的节点;计算完全二叉树我们可以理解为h-1层是满的再加1个,也可以理解为差1个节点第h层就满了,相当于2^h-1个这两种情况之内都是第h层的范畴内。计算节点个数:S=2^0+2^1+2^2+.......+2^(n-1) =2^h -1。1、度为0的比度为2的多一个,此处n0为叶子节点,n1为一个叶子节点,n2为两个叶子节点。节点个数:2^(h-1)-1+1 ~ 2^h -1;
2023-05-22 15:10:36
519
3
原创 二叉树前序、中序、后序遍历的“知二求一”
第三步、经过上一步之后我们右确定了三个数字的位置,那么未确定位置中前序遍历为621,中序遍历为6912,同理由中序遍历可知6在9的左侧即为9的左子树而1和2为右子树。首先我们从已知题目中可以获取的信息有:1、由前序遍历可知5即为二叉树的根,2、由中序遍历结合前序遍历可知7和4为5的左子树的内容,而6912则为右子树的内容。第二步,在经过上一步处理之后我们抛去已知位的数字,那么剩下的前序遍历中的数字就剩749621,中序遍历中的数字就为左半部分为47右半部分为6912。中序遍历:JGDHKBAELIMCF。
2023-05-21 19:10:04
594
1
原创 数据结构:栈和队列
那么我们接下来进行栈的实现,在实现栈的这个结构时可以使用数组和链表实现,相比之下数组实现更优,通常入栈和出栈都在数组尾进行实现。同样定长数组和动态开辟的数组都是可以的,但是动态开辟的数组更有利于使用。那么首先学习栈的定义:栈是一种特殊的线性表,其只允许固定的一端进行插入和删除操作,进行插入和删除操作的一端称为栈顶,而另一端称为栈底。定义:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。压栈:栈的插入操作称为压栈、入栈、进栈数据在栈顶。栈在使用的时候一定要谨记栈是后进先出的结构。
2023-05-07 23:49:12
46
原创 数据结构——链表
在对顺序表有一定的了解之后,我们会发现,顺序表的头插头删不是很方便,每头插一次就要将整个表中的每个值向后移动,效率骤减,对此有没有更好的方法呢,那么链表就可以弥补这个问题,下面我们就来看看链表。原因也很简单,若要删除pos位置的值,我们还得从头遍历找到前一个节点,这样的话才能将pos位前与pos位后的节点连接起来。其实问题还是明显的,若是在pos前的位置插入,我们无法直接得到pos前这个位置,仍需从链表头开始查找。从堆上申请的空间,可能是连续的,也可能是不连续的。// 单链表删除pos位置之后的值。
2023-03-12 17:40:19
47
原创 数据结构——顺序表
在使用中,静态顺序表因为其在使用前就得固定大小,那么就导致了使用者在创建表之前就得知道自己需要的大小,而很多情况下我们是无法事先预料的,那么就导致了要么开辟小了,要么开辟多了造成浪费,所以我们更多使用动态顺序表,这样对空间的才会有更好的使用,下面我们来一起看看动态顺序表的增删查改。线性表是具有相同数据元素的有限序列,常见的线性表有:顺序表、链表、栈、队列、字符串等,线性表是一种逻辑结构,也就是说地址也许不是连续的,但是却能通过上一个元素找到下一个元素。简单,便于实现和操作。// 顺序表删除pos位置的值。
2023-03-07 19:33:43
81
1
原创 C的预编译
我们都知道,计算机只能识别二进制代码,我们编写的高级语言代码直接给计算机,它是看不懂的,那么这时候就需要有翻译的出现 ,而我们使用的代码编辑软件如:Visual Studio2022这就是一款集成开发软件,而这其中就包括了翻译功能,通过翻译功能将我们所写的代码翻译成机器识别的代码——简而言之就是翻译,从高级语言->机器语言。这时候程序使用一个运行时堆栈(STACK),存储函数的局部变量和返回地址,,程序同时可以使用static(静态)内存,而存储与静态内存中的变量值,在程序运行中一直保存,直至结束运行。
2023-03-04 18:50:04
48
原创 C文件操作
在学习中最关键的是文件类型指针,简称“文件指针”,每个被使用的文件都会在内存中开辟相对应的文件信息区,用来存放文件的相关信息,(如:文件的名字,文件状态,以及文件的位置,)这些信息是保存在一个结构体变量中,该结构体类型是有系统声明的,取名FILE;fgets()将文件中的内容读取到char*指向的空间中,读取多少取决于变量size大小,或者读取到换行符时,或者到达文件末尾时,它会停止。在读写文件之前,要先打开文件,在编写程序的时候,打开一个文件都会返回一个FILE*的文件指针指向该指针。
2023-02-17 00:14:31
69
原创 编写通讯录(文件版)
1、在编写通讯录时,首先就是要有一个针对存储每个人信息的变量,在创建完一个人的变量,接下来分析,既然我们要写文件版,那么很关键的一个点就是,将文件中的信息读取到内存中,同理我们创建一个结构体变量来存储从文件中读取出的信息,除人员信息外,我们还可以获得总人数,从而更方便我们动态开辟存储空间。初始化功能,其目的是将文件中的数据读取至动态开辟的内存中,为此我们需要几个文件操作的函数,来帮助我们初始化通讯录,在上述读取以及保存都完成后,我们针对通讯录文件版的关键部分就已经完成了,下面就是针对各个模块的编写了,
2023-02-05 17:07:04
431
原创 位段-枚举-联合体
但是事实却不是如此,在如今互联网加移动应用及数据交互的大环境下,应用及数据讲究可移植性,因为我们所使用的硬件机器分为大端字节序机器和小端字节序机器,简而言之就是正着放和倒着放(只为方便理解,详情请客官移步。在此之前我们学习的结构体都是一次申请多个字节,甚至算上对齐,会消耗一部分的空间,那么有一种想法就是,我们能不能把每一位划分成几个段来使用,以达到更高的利用。联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联。联合的大小至少是最大成员的大小。
2023-02-01 18:16:34
68
原创 库函数的分析与模拟(上)
在写代码的时候我们会经常处理一些字符或字符串,C语言又没有字符串类型,所以字符串通常存放在字符数组或者字符串常量,而后者适用于不进行更改的情况下,接下来我们探讨的是前者,那么进入我们今天的学习吧。函数返回值:返回值为需要的指针类型,注意此函数是针对字节级别的处理,所以参数是可以任意类型(自己做好设计需要使用什么样的数据)函数参数:第一个参数是目标空间的地址,第二个参数为源数据的空间地址,第三个参数为需要拷贝的字节。函数参数为:第一个参数为被查找的字符串,第二个参数为查找的字符串,用指针接收使用,
2023-01-16 22:56:11
75
2
原创 剖析数据在内存中的存储(C语言)
20的二进制数应该是 00000000 00000000 00000000 00010100(在这里补0是为了与计算机机器字长等长所补的,不影响数值的变化,仅看数值为10100)0x00000014,这是原数值直接对应的二进制,但是如图所示,是0x14000000.那么这么显示是什么原因呢?我们知道,要创建一个变量,是需要在内存中占用空间的,而类型就是决定创建的变量占用多少字节的内存,但是这些数据是怎样放在内存中的呢?通过这个图我们对二进制有了简单的理解,那么我们继续学习,
2023-01-13 23:20:51
109
4
原创 结构体基础回顾
在一些场景下C语言提供的类型不满足我们的需要,这时候就需要我们去用提供的类型去构造一个类型,例如我们需要一个学生类型,但默认类型中却没有我们需要的,这时侯我们分析可知,学生是由姓名(char)年龄(int)成绩(struct)等等,仔细看,其实还是由这些类型组成的,那么我们就需要将这些结合起来,说明:类型与变量是不同的,我们可以对一个变量进行辅助操作,而不能对一个类型进行操作,也就是说结构体类型创建好后就没法改变类型,同时只是创建结构体类型系统是不会分配内存的,而实现创建好的结构体变量是会被分配内存的。
2022-12-15 23:51:38
129
5
原创 字符类型知识梳理
首先关于字符常量,其常见为单直撇括起的一个字符,这种形式就是字符常量,例如:'A' 'a' '#'等都是正确的字符,需要注意的是,字符常量只能是一个,例如'AB'这就是错误的并且字符是区分大小写的,两个撇号只是用来界定范围,不算在字符内,字符常量在使用时,只需直接使用即可,字符串输入使用的是gets函数,作用是将读取的字符串保存在形参str变量中,读取过程直到出现新的一行为止,其中新的一行的换行字符将会转换为空终止符'\0'。输出字符使用是putchar函数,作用是向显示设备输出一个字符,
2022-12-11 23:18:42
2349
3
原创 visual studio2022编译器x86环境与x64环境栈使用
在x86环境下,栈区内的内存使用是先使用高地址再使用低地址, 那么在这个程序中,先在高地址中创建i变量,而后空8个字节的位置创建数组,那么在从arr[0]的地址向下赋值为0,终会越界访问到属于变量i的地址,导致i的值又重新赋值为0,那么就会造成死循环。那么显而易见,先是变量i创建在低地址,而后再创建数组的内存,而后数组越界后则会报错,因为并没有产生死循环,而是在循环够12次之后停止循环,并将错误报出,而在x86环境下并不是不报错,而是一直忙于循环,而没有时间将错误报出,
2022-11-26 17:59:10
1643
原创 扫雷游戏的制作
这里我们需要有一个记录非雷数量的变量来控制结束,pw指针将用于记录后面递归展开时,每展开一个非雷位置就加1,直到我们的所有非雷位置判断完成即游戏胜利,而后我们首先判断用户是否输入的值是越界的,如果不是进行下一步,再判定有没有重复进行选择,如果是新的坐标,那么我们再判断是不是雷,如果不是雷,那么我们就进行下一步,扩散展开。通过对表面的操作对,下层的雷进行排查 ,在对应坐标如果下层是雷则结束游戏,如果不是则展开周围一片的位置,对于这个程序的思路主要是要将其分层,分为可是层与存放雷的一层,
2022-11-13 18:04:49
934
4
原创 三子棋游戏(通用型)
1.创建一个玩家落子的函数,2.一个电脑落子的函数,3.创建一个判断输赢的函数,4.还有显示函数,这几个函数我们单独封装在一个game.c文件中,当然我们在使用这个game.c函数的时候需要创建一个.h文件对函数进行声明,并且在测试.c文件中调用。否则都是一直进行下去的,此处没有设置强退的功能,,那么使用while循环非常合适,创建一个玩家落子的函数,一个电脑落子的函数,创建一个判断输赢的函数,还有显示函数,2.游戏阶段,我们需要一个基本的棋盘,一个用于存放玩家和电脑所下的棋子的记录。
2022-11-09 23:22:27
700
3
原创 不利用字符串处理函数将内容逆序(含递归)
通过这张图我们可以看出,若是直接进行交换,就会导致我们求字符串长度时产生问题,而字符串长度的问题会带入下次运算,而右侧指针的位置始终处于\0前侧,这就会导致我们字符交换产生错误, 而解决的方式就是在进入下次递归之前将右侧值赋于\0,那么在计算字符串长度时就会计算左侧指针右移一位并且右侧指针左移一位后的长度,而在递归结束之后,再将本层变量tmp中的值赋予右侧。
2022-11-05 18:29:48
219
原创 C语言练习题及解法
1.二分查找的一道题2.循环及判断语句的应用练习题3·给定两个数,求最大公约数4.求出0~999之间的所有“水仙花数”并输出。5.求Sn = a + aa + aaa + aaaa + aaaaa的前5项之和,其中a是一个数字
2022-10-27 22:38:03
420
2
原创 数组求最大值,数组排序及求最大公约数的解法(交流贴)
首先设定数组arr[0]元素为最大值max,并将其与其他数组元素进行比较,若是下一元素比。这个题我使用的最普通的if语句的嵌套使用,若是各位看客有更好的方法,希望可以分享一下。关于数组求最大值的方法很多,本贴使用的是循环遍历的方法求得;max的值大,则将该数字的值赋给max,以此类推,求得最大值。第二步:将大的数与小的数进行取余操作,本例使用180与135。第一步:首先确定两个数num1与num2的大小关系。此时我们就可得知45即为180与135的最大公约数。三,求两个数的最大公约数。
2022-10-18 21:32:33
457
原创 专科也要改变!从起点开始一步一个脚印,走稳每一步坚持坚持坚持!!!
大一浑浑噩噩过去一年,面对专科,我一时不知如何是好,时间是公平的,我没有付出自然没有回报,但没有什么是不可以改变的,为了家庭,为了未来,为了自己,不断学习技能,使自己有价值。我的计划是:首先掌握一门程序语言,让自己可以接触到计算机,并与计算机可以“交流”,首选C语言,原因是“C生万物”,哈哈哈,通过C语言来入门是一个非常好的选择!2.可以有自己的编程思维,学习不是只为了学习,而是更好的服务于生活,它可以是找工作,也可以是解决自己生活中的问题等等,。4.不断学习,永远不要放弃学习,也永远不要放弃自己!
2022-10-13 22:48:26
154
4
原创 计算机内存“四区”的基本知识
const修饰的局部变量(常量)静态变量,static关键字。还包含了常量区,字符串常量,和其他常量(该区域的数据在程序结束后由系统释放)空间)提示指针本是栈区上的,指针保存的数据是在堆区上的。全局区存放字符串常量和其他常量(comst修饰),全局变量和静态变量存放于此,由编译器自动分配和释放,存放函数的参数值,局部变量等。代码区1.存放cpu执行的机器指令。由程序员分配和释放,若不释放则在程序结束由系统释放。...
2022-07-24 18:30:16
1069
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人