自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我会等

交给时间

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

原创 C运用练习讲解

这又是一个新坑,算上之前的4个坑这是第五个坑(1、C/C++的讲解,2、C语言小游戏,3、大学生活,4、假哲家因为某些原因没GS),这个就是发一些自己在刷题的过程中遇到自己感觉还不错的习题进行分享讲解,这将是一个非常长的合集起码最近几年不大会断更。每次的更新就会在最后留有时间戳,相当是自己一个做题的记录吧。这是我自己根据自身实力来选题,希望能帮助到你。(目前一个妥妥的菜鸟入门级别)

2023-12-07 11:14:10 992 36

原创 C语言书籍——B/陷阱之处(2)

典型的链接器把由编译器或汇编器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的实体–该实体能够被操作系统直接执行。链接器通常把目标模块看成是由一组外部对象组成的。每个外部对象代表着机器内存中的某个部分,并通过一个外部名称来识别。因此,==程序中的每个函数和每个外部变量,如果没有被声明为static,就都是一个外部对象。==某些C编译器会对静态函数和静态变量的名称做一定改变,将它们也作为外部对象。由于经过了“名称修饰”,因此它们不会与其它源程序文件中的同名函数或同名变量发生命名冲突。

2024-03-22 09:15:49 469 4

原创 C语言书籍——A/陷阱之处

文章参考于文献:《C陷阱与缺陷》[美]Andrew Koening。

2024-03-08 10:28:29 1136 44

原创 怎么做?这么做。

每天记录自己完成的工作,贴个文档啥的都可以;每月开始计划自己这个月重点在做的事情,以及完成的工作,学习的情况等;每半年、每完成一个大事,做一个复盘总结。记录自己做这件事情的过程、结果与不足。

2024-02-08 15:13:48 443 9

原创 C语言——T/单链表专题

链表的结构跟⽕⻋⻋厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。⻋厢是独⽴存在的,且每节⻋厢都有⻋⻔。想象⼀下这样的场景,假设每节⻋厢的⻋⻔都是锁上的状。概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表。需要将⽕⻋⾥的某节⻋厢去掉/加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从⻋头⾛到⻋尾?最简单的做法:每节⻋厢⾥都放⼀把下⼀节⻋厢的钥匙。在链表⾥,每节“⻋厢”是什么样的呢?

2024-02-08 12:28:52 421

原创 C语言小游戏——4、动态顺序表实现通讯录

C语⾔基础要求:结构体、动态内存管理、顺序表、⽂件操作。2)能够保存⽤⼾信息:名字、性别、年龄、电话、地址等。【思考2】如何保证程序结束后,历史通讯录信息不会丢失。【思考1】⽤静态顺序表和动态顺序表分别如何实现。1)⾄少能够存储100个⼈的通讯信息。

2024-02-08 12:23:23 356

原创 数据结构——E/排序

序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排。排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。内部排序:数据元素全部放在内存中的排序。1.排序的概念及其运用。

2024-02-07 10:24:07 335

原创 数据结构——D/二叉树

双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点。孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点。叶节点或终端节点:度为0的节点称为叶节点。非终端节点或分支节点:度不为0的节点。子孙:以某节点为根的子树中任一节点都称为该节点的子孙。兄弟节点:具有相同父节点的节点互称为兄弟节点。节点的祖先:从根到该节点所经分支上的所有节点。如上图:A是所有节点的祖先;节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推。节点的度:一个节点含有的子树的个数称为该节点的度。

2024-02-06 09:51:07 780 5

原创 数据结构——C/栈和队列

FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。

2024-02-06 09:47:36 657

原创 数据结构——B/顺序表和链表

1. 原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)。3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。线性表在逻辑上是线性结构,也就说是连续的一条直线。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存。概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表。200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...

2024-02-05 15:15:38 989 5

原创 数据结构——A/复杂度

算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的。5.1数据结构学习得差不多了,推荐大家都去把《剑指offer》和《程序员代码面试指南》上的题。如何衡量一个算法的好坏呢?比如对于以下斐波那契数列。5.数据结构和算法书籍及资料推荐。1.1 如何衡量一个算法的好坏。

2024-02-05 15:13:02 930

原创 C语言——S/顺序表专题

数据结构反映数据的内部构成,即数据由那部分构成,以什么⽅式构成,以及数据元素之间呈现的结构。线性表(linearlist)是n个具有相同特性的数据元素的有限序列。概念:数据结构是计算机存储、组织数据的⽅式。线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的,⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表在物理上存储时,通常以数组和链式结构的形式存储。1)能够存储数据(如顺序表、链表等结构)2)存储的数据能够⽅便查找。1、顺序表的概念及结构。

2024-02-04 09:58:45 787 35

原创 算法——C/动态规划

状态:就是形如dp[ i ] [ j ]= val 的噉值,其中i、j为下标,也是用于描述、确定状态所需的变其中val 为状态值。1.确定状态,一般为“到第i个为止xx为j(xx为k)的方案数/最小代价/最大价值”,可以根据数据范围和复杂度来推理。2.确定状态转移方程,即从已知状态得到新状态的方法,并确保按照这个方向一定可以正确地得到最终状态。状态转移:状态与状态之间的转移关系,一般可以表示为一个数学表达式,转移方向决定了迭代或递归方向。最终状态:也就是题目所求的状态,最后的答案。3.确定最终状态并输出。

2024-02-04 09:54:34 390

原创 C语言——R/预处理详解

基本语法举个例⼦:#define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。思考:在define定义标识符的时候,要不要在最后加上;?建议不要加上;,这样容易导致问题。⽐如下⾯的场景:max = MAX;

2024-02-03 09:15:38 1328 18

原创 算法——B/排序

一、冒泡排序一、冒泡排序。

2024-02-03 08:55:19 407

原创 算法——A/算法通识

枚举算法是一种基本的算法思想,它通过穷举所有可能的情况来解决问题。它的基本思想是并进行验证和比较,找到满足问题条件的最将问题的解空间中的每个可能的解都枚举出来,优解或者所有解枚举算法适用于问题规模较小、解空间可穷举的情况。它的优点是简单直观,不需要复杂的数学推导,易于实现。但是,由于需要穷举所有可能的情况,对于问题规模较大的情况,枚举算法的时间复杂度可能会非常高,效率较低。递归是指函数直接或间接调用自身的过程。递归的两个关键要素:递归函数中的一个条件,当满足该条件时,递归终止避免无限递归。

2024-02-02 19:29:44 1326 16

原创 C语言——Q/编译和链接

在ANSI C的任何⼀种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。第2种是执⾏环境,它⽤于实际执⾏代码。

2024-02-02 09:04:07 944 2

原创 C语言——P/文件操作

磁盘上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。1、程序⽂件程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程(windows环境后缀为.exe)。2、数据⽂件⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或者输出内容的⽂件。本章讨论的是数据⽂件。在以前各章所处理数据的输⼊输出都是以终端为对象的,即从终端的键盘输⼊数据,运⾏结果显⽰到显⽰器上。

2024-02-02 08:48:51 971 3

原创 C语言——O/动态内存管理

C/C++程序内存分配的⼏个区域:1. 栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。2. 堆区(heap):⼀般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配⽅式类似于链表。3. 数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。

2024-01-29 13:11:38 1779 52

原创 C语言——N/自定义类型:联合和枚举

像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。

2024-01-29 12:37:37 1514 8

原创 C语言小游戏——3、寻找大公约和小公倍的多种求法

所以我们可以先找出两个数的最大值,然后赋值给变量tmp,然后用变量tmp分别除去两个数,如果能整除,则就是最小公倍数,否则变量tmp自加1,再分别除去两个数,判断是否能整除,一直循环下去,直到变量tmp都能够整除两个数。,然后我们再用两个数分别除去这两个数的最小值,如果都能整除,则就是最大公约数,否则就自减 1 再去除,判断是否能整除,不能就再自减1,一直循环下去直到找到都能被整除的数。几个数共有的倍数叫做这几个数的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。

2024-01-23 19:15:11 1228 36

原创 C语言算法赛——蓝桥杯(省赛试题)

【代码】C语言算法赛——蓝桥杯(省赛试题)

2024-01-21 10:02:04 7510 19

原创 对世界做好了准备了吗?

反复迎接失败和挫折 ,不断地自我提高和自我强化,有两种情况,第一种是正反馈,得到了你想要地成就,第二种是负反馈,很正常,要积极的分析失败的原因,然后去改正,有时候成功只是时间问题。这一篇文章是自己对这三年时间的一个思考,自己在大学一年级迷茫了一年,又在部队历练了两年现在自己又重新回到自己的实际生活中,而自己在面对世界时自己又该怎样去做呢?、认清自己,把自己放在其中认清自己,看清他人的优点;不说教、也不鸡汤,只是按照正确的理论进行实践,然后发现其中的内在逻辑;、坚持自己所坚持的才能拥有自己所从未拥有的;

2023-12-17 12:22:53 2998 43

原创 C语言——M/自定义类型:结构体

答案是不⾏的,因为Node是对前⾯的匿名结构体类型的重命名产⽣的,但是在匿名结构体内部提前使⽤Node类型来创建成员变量,这是不⾏的。仔细分析,其实是不⾏的,因为⼀个结构体中再包含⼀个同类型的结构体变量,这样结构体变量的⼤⼩就会⽆穷的⼤,是不合理的。3.结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的整数倍。4.如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构。体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)

2023-12-14 10:35:26 582 39

原创 C语言——L/数据在内存中的存储

是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。上述概念需要记住,方便分辨大小端。

2023-12-12 11:40:05 1550 31

原创 C语言——K/C语言内存函数

• 函数 memcpy 从 source 的位置开始向后复制num个字节的数据到destination指向的内存位置。• 这个函数在遇到 '\0' 的时候并不会停下来。• 如果source和destination有任何的重叠,复制的结果都是未定义的。对于重叠的内存,交给memmove来处理。

2023-12-11 15:09:12 935 21

原创 C语言——I/深入理解指针(五)

sizeof是,计算变量所占内存内存空间⼤⼩的,单位是,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。

2023-12-05 09:24:21 597 1

原创 C语言——I /深入理解指针(四)

回调函数就是⼀个通过函数指针调⽤的函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。第13讲中我们写的计算机的实现的代码中,红⾊框中的代码是重复出现的,其中虽然执⾏计算的逻辑是区别的,但是输⼊输出操作是冗余的,有没有办法,简化⼀些呢?

2023-12-04 20:13:08 804 5

原创 C语言——I /深入理解指针(三)

C/C++会把常量字符串存储到单独的⼀个内存区域,当⼏个指针指向同⼀个字符串的时候,他们实际会指向同⼀块内存。解释:p先和*结合,说明p是⼀个指针变量变量,然后指着指向的是⼀个⼤⼩为10个整型的数组。存放的是整形变量的地址,能够指向整形数据的指针。上⾯代码的意思是把⼀个常量字符串的⾸字符 h 的地址存放到指针变量 pstr 中。之前我们学习了指针数组,指针数组是⼀种数组,数组中存放的是地址(指针)。那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。数组指针变量是指针变量?

2023-11-29 09:53:21 1247 36

原创 C语言——J/字符函数 和 字符串函数

前言:在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些函数。C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。• 字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包。上⾯的代码,我们将⼩写转⼤写,是-32完成的效果,有了转换函数,就可以直接使⽤ tolower 函。练习:写⼀个代码,将字符串中的⼩写字⺟转⼤写,其他字符不变。

2023-11-28 11:07:03 645 8

原创 C语言——I /深入理解指针(二)

这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且是数组⾸元素的地址,我们来做个测试。我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址。这时候有同学会有疑问?数组名如果是数组⾸元素的地址,那下⾯的代码怎么理解呢?输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。

2023-11-27 15:32:10 1387 6

原创 C语言——H/操作符详解

算术操作符: + 、- 、* 、/ 、%移位操作符:>位操作符:&、|、 ^、~赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、= 、&= 、|= 、^=单⽬操作符:!、++、--、&、*、+、-、~ 、sizeof、(类型)关系操作符: > 、>= 、< 、

2023-11-20 17:11:13 475 37

原创 C语言——I /深入理解指针(一)

八、指针的使⽤和传址调⽤。三、指针变量类型的意义。四、const修饰指针。七、assert断言。

2023-11-20 17:09:34 595 3

原创 C语言小游戏——2、扫雷游戏

1.使⽤控制台实现经典的扫雷游戏,游戏可以通过菜单实现继续玩或者退出游戏;2.棋盘是 9*9 的格子,默认随机布置10个雷;3.可以排查雷,如果位置不是雷,就显⽰周围有⼏个雷,如果位置是雷,就炸死游戏结束;4.把除10个雷之外的所有雷都找出来,排雷成功,游戏结束。

2023-11-14 08:55:53 116 1

原创 C语言——G/ VS2022的调试

找问题的过程叫称为调试,英⽂叫debug(消灭bug)的意思。调试⼀个程序,⾸先是承认出现了问题,然后通过各种手段去定位问题的位置,可能是逐过程的调试,也可能是隔离和屏蔽代码的方式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码,重新测试。

2023-11-14 08:44:45 363 39

原创 C语言——F/函数的栈帧的创建和销毁

栈(stack)是现代计算机程序里最为重要的概念之一,几乎每一个程序都使用了栈,没有栈就没有函数,没有局部变量,也就没有我们如今看到的所有的计算机语言。先入栈的数据后出栈就像叠成一叠的书,先叠上去的书在最下面,因此要最后才能取出。在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。压栈操作使得栈增大,而弹出操作使得栈减小。在经典的操作系统中,栈总是向下增长(由高地址向低地址)。在我们常见的i386或者x86-64下,栈顶由成为 esp 的寄存器进行定位的。

2023-11-13 16:47:50 976 17

原创 呓:如何提高大学生活

中国高等教育学会。

2023-11-09 09:35:10 383 3

原创 C语言小游戏——1、猜数字

1. 电脑⾃动⽣成1~100的随机数;2. 玩家猜数字,猜数字的过程中,根据猜测数字的⼤⼩给出相应的反馈,直到猜对,游戏结束。

2023-11-05 19:12:21 277 4

原创 C语言——E/函数

ret_type fun_name(形式参数)是用来表⽰函数计算结果的类型,有时候返回类型可以是 void ,表⽰什么都不返回;就像⼈的名字⼀样,有了名字方便称呼,函数有了名字⽅便调用,所以函数名尽量要根据函数的功能起的有意义;函数的参数就相当于,⼯⼚中送进去的原材料,函数的参数也可以是 void ,明确表⽰函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。• {}括起来的是函数体函数体就是完成计算的过程。1、单个文件2、多个文件3、static和extern。

2023-11-03 10:25:51 689 35

原创 C语言——D/数组

数组是⼀组相同类型;• 数组中存放的是1个或者多个数据,但是数组元素个数;• 数组中存放的多个数据,类型是的。数组分为,多维数组⼀般⽐较多⻅的是⼆维数组。

2023-11-02 09:05:21 852 47

空空如也

空空如也

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

TA关注的人

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