自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 初阶数据结构—排序

3. 空间复杂度:O(logN)4. 稳定性:不稳定。

2024-07-10 15:06:24 830

原创 初阶数据结构—二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。。

2024-06-25 15:14:04 689 1

原创 初阶数据结构—栈和队列

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,。出栈:栈的删除操作叫做出栈。。

2024-05-23 09:53:59 1104

原创 初阶数据结构—顺序表和链表

新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点。假设A链表相交之前的节点数是a,B链表相交之前的节点数是b,相交(含相交节点)之后的节点是c。由于快指针的速度是慢指针的2倍,相当于同样的时间快指针走过的距离(即链表的长度)是慢指针的两倍。假设链表长度为n,快指针先走k步,那么快慢指针的距离就是k,然后快慢指针同时往后走,那么当快指针遍历完链表时,慢指针走的距离就是n-k。

2024-05-10 15:08:50 1155 1

原创 初阶数据结构—算法的时间复杂度和空间复杂度

数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。2.什么是算法?算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

2024-04-02 21:11:28 1064

原创 C语言学习记录—进阶作业(通讯录文件版本)

2. 添加一个函数,在通讯录打开的时候,可以把文件中的信息加载到通讯录中。1. 添加一个函数,在退出通讯录的时候把信息到保存到文件中。

2024-01-12 22:41:00 412

原创 C语言学习记录—进阶作业(通讯录动态版本)

2. 如果空间不够,就增加空间,每次增加2个人的空间。1. 通讯录默认能够存放3个人的信息。

2024-01-12 21:33:48 475

原创 C语言学习记录—进阶作业(通讯录静态版本)

程序开始时展示菜单,提供增加联系人、删除指定联系人、 查找联系人、修改联系人、排序、显示联系人、退出功能。即使用do while循环保证程序可以重复执行,用switch语句实现选择功能。3. 创建通讯录的结构体。即使用联系人结构体创建数组,并且创建一个计数器变量,用于记录通讯录中联系人的个数(即有效信息)。人的信息:名字+年龄+性别+电话+地址。contact.c 通讯录相关的实现。contact.h 通讯录相关的声明。2. 创建联系人信息的结构体。4. 实现上述提到的各功能。3. 删除指定联系人。

2024-01-12 21:01:08 445

原创 C语言学习记录—进阶作业7(预处理操作+链接)

A.__FILE__B.__TIME__C.__DATE__D.__MAIN__答案:DA.预处理B.编译C.链接D.执行答案:C//test.c文件中包括如下语句//int* a,b;a的类型是int* b的类型是int//typedef对int*重命名,int_ptr是一个独立可用的类型//A.a//B.b//C.c//D.d//答案:B。

2024-01-10 16:15:18 430

原创 C语言学习记录—程序环境和预处理

_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义int main()if (!pf)//当pf为NULL时,!pf就是非空,非空为真,进入if内部,即pf为空指针时报错int i = 0;for (i = 0;i < 10;i++)//这些信息可以用于记录日志。

2024-01-09 16:35:44 961

原创 C语言学习记录—进阶作业6(C语言文件操作)

B.feof函数是在文件读取结束的时候,检测是否是因为遇到了文件结束标志EOF,而读取结束。B.fopen打开文件的方式是"w",如果文件不存在,则创建该文件,打开成功。B.fscanf和fprintf是针对所有输入、输出流的格式化输入、输出语句。A.fopen打开文件的方式是"r",如果文件不存在,则打开文件失败。D.文件路径指的是从盘符到该文件所经历的路径中各符号名的集合。D.fread是适用于文件输入流的二进制输入函数。A.feof函数是用来判断文件是否读取结束的。

2024-01-07 16:31:46 390

原创 C语言学习记录—C语言文件操作

磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。//写一个字符//character --这是要被写入的字符。该字符以其对应的 int 值进行传递。//stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流。//如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。//写文件char i = 0;i

2024-01-07 15:35:28 859

原创 C语言学习记录—进阶作业5(动态内存函数)

A.malloc函数和calloc函数的功能是相似的,都是申请一块连续的空间。B.malloc函数申请的空间不初始化,calloc函数申请的空间会被初始化为0C.realloc函数可以调整动态申请内存的大小,可大可小D.free函数不可以释放realloc调整后的空间答案:D - 上面提到的3个开辟空间的函数都可以使用free释放。

2024-01-06 14:51:31 375

原创 C语言学习记录—动态内存管理

C分配一个size字节大小的内存块,返回一个指向该块开头的指针。这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数size为0malloc的行为是标准是未定义的,取决于编译器。//malloc函数。

2024-01-03 17:32:33 798

原创 C语言学习记录—进阶作业4(结构体大小计算)

/A.20//B.15//C.11//D.9//答案:D - 结构体3个字节乘以MAX_SIZE,即3*2+3。

2024-01-01 21:16:46 373

原创 C语言学习记录—进阶作业(额外作业)

小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。输入描述:每组输入包含两个正整数n和m。输出描述:对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。:用辗转相除法求最大公约数。两个整数的乘积 = 他们的最大公约数 * 他们的最小公倍数。

2024-01-01 15:54:20 314

原创 C语言学习记录—自定义类型详解:结构体、枚举、联合

结构体变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//结构体变量的初始化int x;int y;//结构体变量的初始化//结构体创建类似图纸,变量才是盖了房子。创建结构体没有开辟空间,创建变量才开辟了空间int age;int n;char ch;int age;

2023-12-09 17:01:34 868

原创 C语言学习记录—字符函数和字符串函数

源字符串必须以 '\0' 结束。会将源字符串中的 '\0' 拷贝到目标空间。目标空间必须足够大,以确保能存放源字符串。目标空间必须可变。学会模拟实现。int main()//错误写法,这是常量字符串,不能修改//错误写法,arr1是数组名,是地址,地址是一个常量值(不是空间),不能被赋值//必须有\0,否则报错return 0;源字符串必须以'\0'结束。目标空间必须有足够的大,能容纳下源字符串的内容。目标空间必须可修改。字符串自己给自己追加,如何?

2023-12-04 23:51:54 788

原创 C语言学习记录—进阶作业3(函数指针数组、指针和数组运算)

从2到n + 1行,每行输入m个整数(范围 - 231~231 - 1),用空格分隔,共输入n * m个数,表示第一个矩阵中的元素。从2到n + 1行,每行输入n个整数(范围 - 231~231 - 1),用空格分隔,共输入n * n个数。KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。(1≤n≤10, 1≤m≤10)输入描述:第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。

2023-11-17 17:13:27 92

原创 C语言学习记录—进阶作业2(字符指针)

下面哪个是正确的?( )答案:A - (*F)(int, int)是一个函数指针且有两个int形参,把这部分去掉还剩返回类型int(*)(int),这个返回类型又是一个函数指针,且形参是int,返回类型是int答案:C - A是整形数组,B是数组指针,D是函数指针数组(a先和[10]结合,是数组。去掉a[10],剩下的是函数指针)pf = &fun;pf = fun;*pf = fun;pf = fun;答案:B - A第二个形参char类型不对;

2023-11-16 23:37:10 73

原创 C语言学习记录—进阶作业1(数据在内存中的存储)

A.一个数的原码是这个数直接转换成二进制B.反码是原码的二进制符号位不变,其他位按位取反C.补码是反码的二进制加1D.原码、反码、补码的最高位是0表示负数,最高位是1表示正数答案:D - 0表示正数,1表示负数。

2023-11-16 17:10:39 79

原创 C语言学习记录—作业9

调整数组使奇数全部都位于偶数前面。输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。思路:设置left和right指针。left从左开始找偶数(即遇到奇数就跳过);right从又开始找奇数(即遇到偶数就跳过)。将left找到的偶数和right找到的奇数交换。

2023-11-16 11:15:53 77 1

原创 C语言学习记录—指针进阶

指针数组 - 是数组,是用来存放指针的数组。int main()//存放整型指针的数组,数组每个元素的类型是int*(即int*类型的值)//存放字符指针的数组//一级字符指针的数组//二级字符指针的数组return 0;数组指针 - 是指针,指向数组的指针int main()//p1先跟[]结合,是个数组,有10个元素,p1是数组名,数组元素类型是int*。p1是指针数组//p2先跟*结合,p2是指针,指向的是数组,数组元素10个,数组元素类型是int。p2是数组指针。

2023-11-01 17:46:17 93 1

原创 C语言学习记录—数据的存储

假设一个整形是0x11223344,左边为低地址,右边为高地址11 22 33 44 - 大端字节序存储44 33 22 11 - 小端字节序存储0x11223344,11是高位,44是低位字节序:以字节为单位讨论顺序大端【字节序】存储:把一个数据的高位字节序的内容放在低地址处,把低位字节序放在高地址处小端【字节序】存储:把一个数据的高位字节序的内容放在高地址处,把低位字节序放在低地址处请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。

2023-10-15 17:27:39 83 1

原创 C语言学习记录—作业8

水仙花数是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。求Sn = a + aa + aaa + aaaa + aaaaa的前5项之和,5. 3个空瓶换了1瓶汽水,还剩1个空瓶,喝的加剩下的1个空瓶,总共有2个空瓶。4. 2瓶汽水喝完,总共有2+1(这个是上次剩下的)空瓶。6. 2个空瓶换1瓶汽水,此时只有1个瓶子,换不了,结束。1. 买了20瓶,有20个空瓶,换10瓶汽水。3. 5个空瓶换2瓶汽水,还剩余1空瓶。

2023-10-03 17:55:03 59

原创 C语言学习记录—调试技巧

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。在环境中选择debug选项,才能使代码正常调试。2. 常用快捷键F5启动调试,经常用来直接跳到下一个断点处。F9创建断点和取消断点断点的重要作用,可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。F10。

2023-10-03 14:58:14 41

原创 C语言学习记录—作业7

思路:1的二级制序列最低位是1,让n和1按位与(只要有0就是0,同时为1才是1),这样就可以得到n的最低位。假设int是-1,那么内存的中二进制是32个1(补码),将它转换为无符号数时,直接把补码当做原码。结论:先用n%2获取二进制的最后一位(即余数的二进制序列),再用n/2去掉被求数二进制最后一位(即商的二进制序列)两个数按位异或,二进制位相同为0,相异为1,所以统计按位异或后的二级制中有多少个1即可。2的n次方二进制序列只有一个1,n&(n-1)就把二进制序列的1去掉了,结果就是0。

2023-10-02 21:37:27 55 1

原创 C语言学习记录—结构体

int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;//结构体类型里包含其他结构体变量//结构体嵌套初始化//结构体嵌套初始化。

2023-09-30 09:29:47 41

原创 C语言学习记录—指针

1.指针是内存中一个最小单元(1字节)的编号,也就是地址2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。

2023-09-28 16:03:29 53

原创 C语言学习记录—作业6

int n = 0;//有几个数int arr[n];//牛客网支持变长数组//接收n个数字int i = 0;for (i = 0;i < n;i++) {//要删除的数int j = 0;//j作为下标锁定的位置就是用来存放不删除的数据的for (i = 0;i < n;= del)//j最开始是0,先试用,后++。如果arr[i]不等于要删除的数,就存到arr[j]里面并++//这一步是将不等于del的元素移到前面//等效下方。

2023-09-24 15:00:26 64 1

原创 C语言学习记录—作业5

思路:第1个数+第2个数=第3个数。又因为最开始两个数都是1,所以创建3个变量分别是第1、2个数(初始化为1),和第3个数。思路:假设有10个数(n=10),那么每个数都要交换到指定位置需要9轮(n-1),因为9个数交换完,最后一个数也在指定位置了。3. left指针往后走,right指针往前走,只要两个指针没有相遇,继续2,两个指针相遇后,逆置结束。交换两个元素,每次左下标+1,有下标-1,直到左右下标相等说明只有一个元素,此时不需要再交换。k>0,例如3^3可以理解为3*3^2(即n*n^k-1)

2023-09-24 10:18:12 49 1

原创 C语言学习记录—作业4

其次,一个数A能被另一个数B整除(除数B和商C不为1或它本身),也可以理解为这个数A是另外两个数B C的乘积。这里创建一个阶乘的变量,并初始化为1,这样1*1还是等于1。2的阶乘是用2乘以1的阶乘。思路:一开始忽略正负号,先求出所有的1/1 1/2 .... 1/99 1/100,然后利用flag每次一正一负。思路:遍历100到200之间的数,用2~n-1的数去试除,如果没有一个数能整数,则说明是素数。如果所有的数都不能整除,则说明是素数,此时标记变量还是1,那么打印这个数。

2023-09-24 08:33:59 69 1

原创 C语言学习记录—作业3

【代码】C语言学习记录—作业3。

2023-09-23 16:04:08 74 1

原创 C语言学习记录—操作符

注意区分整形除法和浮点型除法。浮点型除法,除数和被除数至少有一个浮点数。

2023-09-23 15:27:30 132 1

原创 数组的应用实例2—扫雷

1. 程序开始时的思路和三子棋一样,展示菜单,1是开始游戏,0是退出程序,其他选项提示错误输入。使用switch语句实现这个逻辑,判断条件就是玩家的输入。这个程序想让玩家可以重复玩,所以在将这个switch语句放入do while循环中,do while的判断条件也是玩家输入。为此需要菜单函数和游戏功能实现函数。2. 假设棋盘是9*9大小,并且放置10个雷。没有雷的地方用'0',有雷的地方用'1'。

2023-09-13 15:31:09 52 1

原创 数组的应用实例1—三子棋

1. 程序一开始需要展示一个选择界面,根据玩家选择决定后续执行。这里假设1是开始游戏,0是程序,其他选择提示错误选项,即创建一个input变量接收玩家选项。此功能可以使用switch语句来实现。除此之外,这个游戏可以重复玩,一旦结束又回到最开始的选择界面。所以将这个switch语句放到do while循环中。这样不仅可以实现一开始展示界面,还能反复玩。同样这个do while循环也使用玩家输入作为条件。

2023-09-12 16:06:49 89 1

原创 C语言学习记录—数组

本章节分为:一维数组创建和初始化、二维数组创建和初始化、数组越界、数组作为函数参数。

2023-09-12 14:32:25 58 1

原创 C语言学习记录—函数

声明就告诉编译器有一个什么样的函数(名字、参数、返回类型)。但是否存在声明决定不了。声明要在函数使用之前,先声明后使用。声明一般要放在头文件中函数的定义:就是函数功能的具体实现。

2023-09-10 17:06:59 48

原创 C语言学习记录—分支语句和循环语句

本章内容有if语句、switch语句、while循环、for循环、do while循环、goto语句以及本章的练习。接下来一个一个分析。

2023-09-10 14:57:12 77

原创 C语言学习记录—初识C语言

通过初识c语言这一章发现,c语言的基本语法和Python有很多相似之处。但是在学习Python的时候并不了解在创建变量意味着什么,当时也并不理解= 不是等于的意思,而是赋值的意思。现在能了解到一些代码背后的事情。最后希望自己坚持下去。

2023-09-09 16:38:41 68

空空如也

空空如也

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

TA关注的人

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