自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++命名空间、输入和输出、缺省参数、函数重载、引用、c++与c相互调用、内联函数

C++是一种计算机高级程序设计语言,由C语言扩展升级而产生。C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。C++引入了类和对象,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。(注:C++的源文件是以.cpp为后缀的,跟C语言不一样。

2023-11-25 18:10:55 68

原创 C语言八大排序

排序就是将一堆杂乱无章的数据,按照每个元素的大小,以递增或者递减的形式排列数据。稳定性:如果多个相同的元素,排序完,它们的前后顺序保持不变,则这个算法是稳定的;如果它们的前后顺序不一致,算法是不稳定。本次博客中算法都是排序升序的。

2023-11-25 18:08:57 37

原创 C语言数据结构——二叉树(链式结构)

对于非完全二叉树和满二叉树,使用链式存储比较好,用链表来表示一棵二叉树。本篇博客使用的二叉树都是这个图,可以自行修改节点连接顺序,测试函数功能是否正常。二叉树的链式结构遍历有:前序、中序、后序的递归结构遍历。前序遍历(Preorder Traversal 亦称先序遍历):访问根结点的操作发生在遍历其左右子树之前。前序遍历顺序:根、左子树、右子树;先访问根,再访问左子树,最后访问右子树。左子树和右子树也分为根、左子树、右子树。上图二叉树的前序遍历,#表示空树:1 2 4 # # # 3 6 # # #。

2023-11-25 18:06:15 27

原创 C语言数据结构——二叉树(顺序结构)

树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。第一个节点被称为根节点。树是递归定义的。树可以分为根和子树,子树又被分为根和子树。树的子树是不相交的。

2023-11-25 18:04:40 80

原创 C语言数据结构——队列

只允许在一端进行插入数据,在另一端进行删除数据操作的特殊线性表,队列具有先进先出,后进后出的性质。插入数据的操作叫做入队列,删除数据的操作叫做出队列。队列可以取到队头的数据和队尾的数据。顺序表不太好,出队列需要挪动数据,使用单链表。一个是整型变量,记录队列元素个数。队列可以使用在排队的情况,在银行办理业务的时候,先取号,那张表示会告诉前面还有多少人,即队列元素个数-1。初始化、入队列,判断队列是否为空、出队列、取队头数据、取队尾数据、队列元素个数、销毁。出队列的顺序只跟入队列顺序有关,先进先出,后进后出。

2023-11-25 18:02:40 18

原创 C语言数据结构——栈

一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守先进后出,后进先出的原则。栈插入数据的操作叫做入栈、压栈或者进栈。从栈顶入数据。栈删除数据的操作叫做出栈。从栈顶出数据。

2023-11-25 17:58:23 25

原创 C语言带头双向循环链表

带头双向循环链表是链表中最复杂的结构,同时也是最优的结构,头插头删,尾插尾删的时间复杂度都是O(1)。头也叫哨兵位。程序分模块写,一个头文件DList.h放头文件、结构体声明、函数声明。两个源文件DList.c、test.c。DList.c包好DList.h头文件,实现DList.h声明的函数,即实现顺序表所使用的函数。test.c用来测试函数有没有问题,最后实现目录,测试之前头文件中要写函数的声明,并且test.c文件中要包含头文件DList.h。

2023-11-25 17:54:44 35

原创 26.单链表

动态顺序表插入删除的时间复杂度是O(N),需要扩容,为了解决这些问题,出现了链表。链表是一种存储上非连续的的存储结构,数据的元素的逻辑顺序是通过链表中的指针连接的,链表的插入删除的时间复杂度是O(1),不需要挪动数据,按需申请节点空间。链表有八种结构:带头、不带头,循环、不循环,单链表、双链表,三个两两组合,一共八种。先实现最经典的不带头不循环单链表,对链表有一个深刻的认识。分模块写,一个头文件SList.h放头文件、结构体声明、函数声明。两个源文件SList.c、test.c。

2023-11-25 17:53:06 14

原创 24.时间复杂度和空间复杂度

算法是可执行程序运行所需的时间和空间资源,一个算法的好坏,看时间复杂度和空间复杂度。时间复杂度是算法的运算速度,空间复杂读是算法所需的额外空间。早期的时候,计算机的存储容量很小,时间复杂度和空间复杂度都很重要。现在计算机的存储容量很大,提升的也很快(摩尔定律——价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。),现在主要关注时间复杂度。

2023-11-25 17:51:22 17

原创 C语言预处理

define定义的标识符和宏一般全大写。程序是通过预处理、编译、汇编、链接,最后才成为可执行程序.exe。#define N 10//常量#define ADD(x, y) ((x)+(y))//宏int main()int arr[N];int a = 4;int b = 5;宏名后面加()括号,宏名和()中不能有空格,里面的参数用,隔开, 传参的时候,参数会先完成替换,再替换宏。#define定义的常量和宏、包含头文件在预处理阶段完成替换。

2023-11-25 17:50:11 10

原创 C语言预处理、编译、汇编、链接

符号汇总:汇总全局的符号,hello.c中的hello函数、test.c中的main函数和hello函数。可以看到符号表中的hello合并了,没有了TYPE是NOTYPE的hello函数,只剩下TYPE为FUNC的hello函数。如果链接的时候有TYPE为NOTYPE的函数或者变量,程序报错,链接错误,出现未定义的符号。hello.o的符号表中hello的TYPE是FUNC(函数),test.o的符号表中的hello的TYPE是NOTYPE(未定义)。hello.i和test.i里面存放预处理后的代码。

2023-11-25 17:49:51 19

原创 C语言文件读写

磁盘上的文件是文件。在程序设计中,从文件功能的角度来分类有两种文件:程序文件、数据文件。

2023-11-24 11:17:22 46 1

原创 C语言动态内存

空间是在堆区开辟的,开辟的大小是固定的。C语言提供了三个函数开辟动态内存的空间:malloc、calloc、realloc,还有一个函数对动态内存开辟的空间进行释放free函数。

2023-11-24 11:15:36 18 1

原创 C语言枚举类型、联合类型(共用体)

关键字是enum,能够一一列举的类型能够使用枚举类型。例如:周一到周日、三原色的红绿蓝等等。枚举类型里面的值是枚举常量,这些都是有值的,默认是从0开始,依次加1,在定义的时候可以赋初值。

2023-11-24 11:12:24 16 1

原创 C语言位段

位段的声明和结构体是类似的,有两个不同:1.位段的成员必须是 char、unsigned int 或signed int。2.位段的成员名后边有一个冒号和一个数字。冒号后面数字代表该成员变量占多少个比特位的数据。a使用4共 ,b使用8个,c使用31个,一共需要43个比特位,开辟两个int类型存储。C语言标准并没有规定位段内存中的使用方式,所以位段不具有跨平台性。

2023-11-24 11:11:42 16 1

原创 C语言结构体内存对齐

结构体的成员变量并不是按照数据大小直接存储的,有存储规则——结构体内存对齐。

2023-11-24 11:08:14 15 1

原创 C语言模拟实现memcpy、memmove

strcpy、strcat、strcmp都是字符串拷贝函数。对于其它类型的拷贝,需要memcpy函数。

2023-11-24 11:01:42 40 1

原创 C语言实现冒泡排序排序所有类型的数据

使用冒泡排序完成所有类型的数据排序之前,先学习一下快速排序(qsort)函数,为什么这个函数能够排序所有类型的数据。

2023-11-24 10:54:34 57 1

原创 C语言模拟实现strcpy、strcat、strcmp

完成字符串拷贝。strcpy函数的返回类型是字符指针,参数有两个,都是字符指针。返回值是目标地址的起始地址。第一个参数是目标字符串的地址,第二个是以‘\0’结尾的源字符串的地址。参数不能传空指针(NULL),对空指针进行解引用,程序崩溃。strcpy的功能是拷贝字符串,包括'\0',将源字符串的内容拷贝的目标地址中,拷贝的过程不对越界进行检查,如果目标地址的数组大小比源字符串大小小,会破坏目标地址数组的结构,程序崩溃。需要目标空间足够大,找到'\0'并且拷贝到目标地址,这个函数才会结束。

2023-11-24 10:52:43 59 1

原创 C语言数据的存储

内存中有很多的分区,讲一下栈区、堆区和静态区。栈区是存储局部变量、函数形参以及为函数调用开辟空间的区域,栈区会优先使用高地址的空间,再使用低地址的空间。栈区的空间是由编译器自动维护的。栈区上的变量不初始化默认是随机值。堆区是动态开辟的空间,堆区由程序员自己申请使用,需要自主释放申请的空间,否则会造成内存泄漏。如果程序员没有释放,程序结束的时候操作系统自动回收该空间。

2023-11-24 10:52:10 13 1

原创 C语言结构体

struct 结构体名 变量名int age;}Stu;// 全局变量int main()// 局部变量return 0;结构体成员变量有结构体的初始化int age;}Stu;

2023-11-24 10:50:53 10 1

原创 C语言指针

内存是计算机的重要存储器,计算机的程序都是在内存中运行的,内存只能暂时性的存储数据,断电就会丢失数据。内存是一块很大的空间,将内存划分为一个个内存单元,内存单元的大小是一个字节,给每个内存单元都编号,编号就是内存单元的地址,可以通过地址访问内存单元的数据。内存就像生活中的城市,内存单元就像城市里的房子,内存单元的地址就像房子的地址,有了房子的地址,就能找到房子,访问房子里面的人。

2023-11-24 10:49:45 19 1

原创 C语言操作符

:两边都是整数的时候,进行整数除法,不保留后面小数;一边有浮点数才进行浮点数除法%:求余规定两个操作数都要是整型。x%y:y不能是0,结果范围是0 ~ y-1。

2023-11-24 10:46:40 40 1

原创 C语言三子棋游戏

三子棋游戏,肯定最先就是需要一个棋盘,三子棋需要两个玩家来玩,我们作为其中一个,另一个玩家就让电脑来充当,每个玩家玩家轮流下棋,每次都要打印一下棋盘,看看玩家下棋在什么位置,每次都要判断输赢或者是游戏继续。本次代码要分模块写,game.h:游戏实现函数的声明、头文件的包含。game.c:游戏实现函数的定义。test.c:测试代码,以及实现互动界面。在game.c和test.c包含game.h,自己写的头文件,使用双引号""包含。

2023-11-24 10:42:13 18 1

原创 C语言数组

存放相同数据类型元素的集合数据类型 数组名[数组大小]创建数组,数组元素个数需要是常量,C99标准才支持变长数组,可以使用变量定义数组元素个数(变长数组不能初始化)。

2023-11-24 10:40:18 16 1

原创 C语言函数详解

库函数不能完成所有的需求,需要自己编写函数实现功能。库函数是固定的返回类型、函数名、参数类型,而自定义函数都是需要自己决定的。函数名要起的有意义,最好能直接看出函数大概的作用。函数实现两个整型数据相加(使用返回)int main()int a = 0;int b = 0;printf("输入两个整型数据求和\n");retuurn 0;实现两个整数交换函数。x = y;y = tmp;int b = 0;

2023-11-24 10:38:42 25

原创 猜数字游戏

进入游戏,最先需要做的就是生成一个随机数,这个随机数的生成要放在猜之前生成,所以不要放进猜的循环里,可以创建一个数组,存放之前猜过的数,每次猜完都显示一下,循环内部要使用scanf接收猜的数,游戏的过程中如果不想玩了,用if语句判断,输入0,执行break退出循环;输入0的时候,退出游戏;如果不调用srand库函数为rand库函数准备一个起点,每次运行程序,rand生成的随机数的值都跟上次运行程序生成随机数的值是一样的,那玩家玩了一遍之后,下一次玩猜数字游戏又是猜一样的数,这样的游戏设计的就有问题。

2023-11-23 17:23:40 16

原创 C语言选择语句和循环语句

0表示假,非0表示真。条件成立为1,条件不成立为0。布尔类型,false表示假,true表示真。

2023-11-23 17:22:45 35

原创 初步认识C语言

先简单了解一下计算机语言的发展,计算机语言是从低级语言发展到高级语言,编程的语言一开始是二进制语言(01序列),后面出现助记符(给常用的功能起别名),从而产生汇编语言,汇编语言的使用也不方便,最后诞生了高级语言,而C语言就是一门高级语言。C语言是一门面向过程的代码(关注的是过程,以过程为中心的汇编思想),广泛应用于底层开发(应用软件、操作系统、驱动软件、硬件,C语言就比较擅长中间两个)。

2023-11-23 17:19:55 17

空空如也

空空如也

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

TA关注的人

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