![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
408考研-C语言
文章平均质量分 87
傻啦猫@_@
给我一个支点……
展开
-
【408篇】C语言笔记-第二十二章(文件的操作)
程序执行时就称为进程,进程运行过程中的数据均在内存中。需要存储运算后的数据时,就需要使用文件。这样程序下次启动后,就可以直接从文件中读取数据。文件是指存储在外部介质(如磁盘、磁带)上的数据集合。操作系统是以文件为单位对数据进行管理的。说明:输入和输出缓冲区实际上是同一个,这里为了形象化表示而分开了。缓冲文件系统:系统自动地在内存中为每个正在使用的文件开辟一个缓冲区。用缓冲区文件系统进行的输入/输出称为高级磁盘输入/输出。非缓冲区文件系统:系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。原创 2023-01-04 23:10:39 · 391 阅读 · 5 评论 -
【408篇】C语言笔记-第二十一章(汇编语言)
CPU是如何执行我们的程序的?我们编译后的可执行程序,也就是main.exe,是放在代码段的,PC指针寄存器存储了一个指针,始终指向要执行的指令,读取了代码段的某一条指令后,会交给译码器来解析,这时候译码器就知道要做什么事了,CPU中的计算单元,加法器不能直接对栈上的某个变量a,直接做加1的操作,需要首先将栈,也就是内存上的数据,加载到寄存器中,然后再利用加法器加1操作,在从寄存器搬到内存上去。CPU读写寄存器的速度比读写内存的速度要快很多。操作码字段:表征指令的操作特征与功能(指令的唯一标识),不同的指令原创 2023-01-02 23:02:10 · 1227 阅读 · 1 评论 -
【408篇】C语言笔记-第二十章(数据的机器级表示)
因为32767对应的十六进制数为0x7fff,加1后变为0x8000,其首位为1,因此变成了一个负数,去这个负数的原码后,就是其本身,值为32768,所以0x8000是最小的负数,即-32768,因此导致计算结果出错。在看指数部分,计算机并不能直接计算10的幂次,f的指数部分为1000 0001,其十进制值为129,129-127=2,即实际指数部分为2,指数值为2,代表2的2次幂。注意:通过8位表示,-5的补码为1111 1011,-5的原码为10000 0101,符号位不动的,只有值的部分是5。原创 2022-12-31 20:35:15 · 601 阅读 · 2 评论 -
【408篇】C语言笔记-第十九章(C语言语法进阶)
如果掌握了C++的引用,其实不需要去学习二级指针,对于考研必要性很低,二级指针是指针的指针,二级指针的作用是服务于一级指针变量,对一级指针变量实现间接访问。二维数组中的元素在内存中的存储规则是按行存储,即先顺序存储第一行元素,后顺序存储第二行元素,数组元素的获取依次是从a[0][0]到a[0][1],直到最后一个元素a[2][3]。例如:可以把二维数组a[3][4]视为一个一维数组,它有3个元素a[0]、a[1]和a[2],每个元素又是一个包含4个元素的一维数组。:相同的数进行异或时,结果为0。原创 2022-12-28 22:17:58 · 302 阅读 · 0 评论 -
【408篇】C语言笔记-第十七章(考研必会的排序算法(下))
比如最后一个父元素的下标是n/2-1,也就是a[4],对应的值是78。首先嘉定第0个元素是最小的,把下标0赋给min(min记录最小的元素的下标),内层比较时,从1号元素一直比较到9号元素,谁更小,就把它的下标赋给min,一轮比较结束后,将min对应的位置的元素与元素i交换。堆排序的步骤是首先把堆调整为大根堆,然后我们交换根部元素也就是A[0]和最后一个元素,这样最大的元素就放到了数组最后,接着我们将剩余9个元素继续调整成大根堆,然后交换A[0]和9个元素最后一个,循环往复,直到有序。空间复杂度O(1)。原创 2022-12-25 12:58:55 · 417 阅读 · 0 评论 -
【408篇】C语言笔记-第十六章( 考研必会的排序算法(上))
首先,我们通过外层循环控制要插入的数,用insertVal保存要插入的值87,我们比较arr[0]是否大于arr[1],即3是否大于87,由于不大于,因此不发生移动,这时有序序列是3,87。接着,将数值2插入有序序列,首先将2赋给insertVal,这时判断87是否大于2,因为87大于2,所以将87向后移动,将2覆盖,然后判断3是否大于2,因为3大于2,所以3移动到原来87的位置。我们找到数组中的一个分割值,把比分割值小的数都放在数组的左边,把比分割值大的数都放在数组的右边,这样分割值的位置就被确定。原创 2022-12-22 20:59:35 · 417 阅读 · 0 评论 -
【408篇】C语言笔记-第十五章( 考研必会的查找算法&考研真题实战)
折半查找的基本思想:首先将给定值key与表中中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置;compare:比较规则,需要我们传递一个函数名,这个函数由我们自己编写,返回值必须是int类型,形参是两个void类型指针,这个函数我们编写,但是是qsort内部调用的,相当于我们传递一种行为给qsort。b.若ab,则舍弃序列A中较大的一半,同时舍弃序列B中较小的一半,要求舍弃的长度相等。原创 2022-12-20 11:50:51 · 576 阅读 · 0 评论 -
【408篇】C语言笔记-第十四章( 二叉树的建树和遍历&考研真题实战)
树是n(n>=0)个节点的有限集。当n=0时,称为空树。在任意一棵非空树中应满足:树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点:树的结构:二叉树是另一种树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。与树相似,二叉树也以递归的形式定义。二叉树是n(n>=0)个结点的有限集合:二叉树的顺序存储:二叉树的链式存储:树节点数据结构:树中任何一个结点都是一个结构体,它的空间我们通过malloc申请。function.hm原创 2022-12-13 23:07:30 · 588 阅读 · 0 评论 -
【408篇】C语言笔记-第十三章(栈与队列&考研真题实战)
循环队列依靠front和rear两个指针同时工作,当front和rear同时指向同一个位置时,说明是初实化状态,队列为空,但是对于d1图的情况,指向同一个位置,但是并不是为空。队列(Queue)简称队,也是一种操作受限的线性表,只允许在表的一端插入,而在表的另一端进行删除。(2)初始时,创建一个只有一个空闲结点的两段式单向循环链表,头指针front和尾指针rear均指向空闲结点。(1)采用链式存储结构(两段式单向循环链表),队头指针为front,队尾指针为rear。队空的判定条件:front=rear。原创 2022-12-09 12:28:41 · 419 阅读 · 0 评论 -
【408篇】C语言笔记-第十二章(单链表的删除&考研真题实战)
删除操作流程图:通过流程图,我们写出代码:对于删除元素的逻辑,可以用一张图来表示:分析:解读:第一阶段:如何找到链表的中间结点?定义两个指针pcur和ppre,让pcur指针每次走两步,ppre指针每次走一步,这样当pcur指针走到最后,那么ppre指针刚好在中间。指针p每次循环走两步,因此每一步都要注意判断是否为NULL。第二阶段:后一半链表设置为了L2,如何让L2原地逆置?首先我们要判断链表是否为空,如果为空,就返回。如果只有一个结点,也不需要逆置,直接返回。第三阶段:将L和L2链表合并,合并时轮流原创 2022-12-07 21:09:33 · 1239 阅读 · 0 评论 -
【408篇】C语言笔记-第十一章(单链表)
头插法流程图:通过流程图,我们写出代码:对于头插法的逻辑,可以用一张图来表示:分析:尾插法流程图:说明:尾插法的特点是始终让尾指针指向链表的尾部。通过流程图,我们写出代码:对于尾插法的逻辑,可以用一张图来表示:分析:流程图:说明:按位置查找要注意判断查找位置是否合法。第四节:往任意位置插入元素往任意位置插入元素流程图:把新结点插入到第i个位置,关键在于调用GetElem函数,拿到第i-1位置的元素地址。原创 2022-12-06 13:27:38 · 334 阅读 · 0 评论 -
【408篇】C语言笔记-第十章(线性表)
由n(n>=0)个相同类型的元素组成的有序集合。L=(a1,a2,……,ai-1,ai,ai+1,……,an)逻辑上相邻的两个元素在物理位置上也相邻。顺序表的定义:2. 优缺点比较分析:最好情况:在表尾插入元素,不需要移动元素,时间复杂度为O(1)。最坏情况:在表头插入元素,所有元素依次后移,时间复杂度为O(n)。平均情况:在插入位置概率均等的情况下,平均移动元素的次数为n/2,时间复杂度为O(n)。代码片段说明:我们在实际的操作中下标是从0开始的,但是说的第几个元素时从1开始的。第i个元素,下标实际原创 2022-12-03 17:21:50 · 578 阅读 · 0 评论 -
【408篇】C语言笔记-第九章(数据结构概述)
算法定义是对特定问题求解步骤的描述。一个基本算法包括:有穷、确定、可行、输入、输出。原创 2022-11-30 23:28:59 · 437 阅读 · 0 评论 -
【408篇】C语言笔记-第八章(结构体及C++引用)
C语言提供结构体来管理不同类型的数据组合。例如:一名学生有学号、姓名、性别、年龄、地址等属性。如果针对学生的这些属性单独定义一个变量,那么在有多名学生时,变量就难以分清。这是就需要用到结构体。struct 结构体名 {成员列表 };先声明结构体名,再定义变量名。int num;char sex;int age;};// 结构体类型声明,注意最后一定要加分号 int main() {// 定义及初始化 printf("-------------------------\n");原创 2022-11-29 20:52:26 · 576 阅读 · 0 评论 -
【408专项篇】C语言笔记-第七章(函数)
函数间的调用关系是:由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意次。return 0;}}print_start 13 进程已结束,退出代码为 0func.c是子函数print_star和print_message的实现,也称定义。main.c是main函数,func.h中存放的是标准头文件的声明和main函数中调用的两个子函数的声明。如果不在头文件中对使用的函数进行声明,那么在编译时会出现警告。原创 2022-11-27 15:11:18 · 580 阅读 · 0 评论 -
【408专项篇】C语言笔记-第六章(指针)
直接访问:如果在程序中定义了一个变量,那么在对程序进行编译时,系统就会给这个变量分配内存单元,按变量地址存取变量值的方式称为“直接访问”,如:printf(“%d”,i);等。间接访问:将变量i的地址存放到另一个变量中,在C语言中,指针变量是一种特殊的变量,它用来存放变量地址。指针变量的定义格式:基类型 *指针变量名;例如:int *i_pointer;指针与指针变量是两个概念,一个变量的地址称为该变量的“指针”。如图:2000是地址,即变量i的指针。原创 2022-11-22 20:19:12 · 641 阅读 · 0 评论 -
【408专项篇】C语言笔记-第五章(一维数组与字符数组)
C语言提供的数组,通过一个符号来访问多个元素。具有相同的数据类型。使用过程中需要保留原始数据。数组是构造数据类型。所谓数组,是指一组具有相同数据类型的数据的有序集合。格式:类型说明符 数组名[常量表达式];例如:int a[10];数组名的命名规则和变量名相同,即遵循标识符命名规则。在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。常量表达式中可以包含常量和符号常量,但不能包含变量。即不允许对数组大小的做动态定义。原创 2022-11-21 22:41:37 · 787 阅读 · 0 评论 -
【408专项篇】C语言笔记-第四章(选择与循环)
for循环不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况,完全可以代替while循环语句。continue语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行是否执行下一次循环的判断。先判断表达式,后执行语句。当表达式的值非0时,就会执行语句,从而实现多次执行的效果。if-else的判断条件结果还是真与假,即1或0,一般是关系表达式或逻辑表达式。break语句的作用是结束整个循环过程,不在判断执行循环的条件是否成立。对1-100的奇数求和。原创 2022-11-21 12:18:03 · 333 阅读 · 0 评论 -
【408专项篇】C语言笔记-第三章(运算符与表达式)
解析:如果写成if(3原创 2022-11-20 14:20:22 · 260 阅读 · 0 评论 -
【408专项篇】C语言笔记-第二章(数据类型,输入与输出)
printf函数可以输出各种类型的数据,包括整型,浮点型,字符型,字符串型等。实际原理是printf函数将这些类型的数据格式化为字符串后,放入标准输出缓冲区,然后将结果显示到屏幕上。位于%和格式化命令之间的一个整数被称为最小字段宽度说明符。通常会加上空格来控制格式。printf函数的所有输出都是右对齐的,除非在%符号后面放置了负号。例如:%-5.2会显示5位字符,2位小数位的浮点数并且左对齐。return 0;}进程已结束,退出代码为 0。原创 2022-11-20 14:17:33 · 649 阅读 · 3 评论