自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构的基本概念

把数据元素总和在一起就是数据对象。即数据对象是具有相同性质的数据元素的集合,是数据的一个子集数据元素可以理解为一个人的性格、样貌、品格、习惯等等,那么这个人就是数据对象数据结构是相互之间存在一种或多种特定关系的数据元素的集合同一个数据对象里的数据元素,可以组成不同的数据结构可以理解成人与人之间的关系,又亲戚,朋友,恋人。并且可以既是朋友也是恋人线性关系 - 微博粉丝排行榜网状关系 - 微博好友关系数据和数据之间的结构关系,会呈现一些共性所以。

2023-11-17 19:25:18 21

原创 数据结构的基本概念

把数据元素总和在一起就是数据对象。即数据对象是具有相同性质的数据元素的集合,是数据的一个子集数据元素可以理解为一个人的性格、样貌、品格、习惯等等,那么这个人就是数据对象数据结构是相互之间存在一种或多种特定关系的数据元素的集合同一个数据对象里的数据元素,可以组成不同的数据结构可以理解成人与人之间的关系,又亲戚,朋友,恋人。并且可以既是朋友也是恋人线性关系 - 微博粉丝排行榜网状关系 - 微博好友关系数据和数据之间的结构关系,会呈现一些共性所以。

2023-11-17 19:20:49 125

原创 38.字符串函数及模拟实现

strtok:char * strtok(char*str,const char * sep) - 切割字符串。strcpy, strcat, strcmp -- 长度不受限制的字符串函数。strncpy strncat strncmp -- 长度受限制的字符串函数。errno是全局的变量,所以要包含库函数<errno.h>sep参数是个字符串,定义了用作分隔符的字符集合。使用库函数的时候,如果失败,都会设置错误码。

2023-11-04 17:15:56 127

原创 37.C语言进阶(纯干货) — 练习 && 解释

解释:一和二是数组名,数组名是表示首元素的地址,并且一和二会开辟两个不同的空间,那么它们的地址自然就不相同啦~;会发现每行的最后一个元素是最大的,那么要找的数字可以直接和最后一个元素对比,如果比它大就跳过,比它小就再这行里用列找即可。或者用一列里最大的来比,小的就在这一列里用行找。要实现左旋,要先拿个地址存放字符,把要左旋的字符放入这个地址里然后把后面的元素往前拿,就可以实现一个左旋,如果要实现两个及以上加个循环就可以了。有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的(没说是等差递增哦)

2023-10-30 19:34:28 341

原创 36.C语言进阶 — 练习 && 解释

C语言练习题!

2023-10-29 20:35:00 126

原创 35.指针进阶 & 练习

接下来就是自己模仿qsort函数实现一个冒泡排序的通用算法,前面的代码记得自己再打一遍噢~ps:如果想实现倒叙就把e1和e2换下位置即可,就不举例子啦~qsort - quit sort - 快速排序。知道了整形是什么排序的,那我们来写一个排序结构体数据的。qsort 整形,字符串,结构体等等数据都是可以排序。以上我们指针的基础内容就学完了,那我们来做点题巩固下。这样bubble_sort就可以像qsort啦!没关系,那我们来试试怎么用它吧~~那么怎么用代码实现呢?

2023-10-28 21:26:48 15

原创 34.指针进阶

如果你把函数的指针(地址)作为参数传递给另外以个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。2.(void(*)())0 - 对0进行强制装换类型,被解释为一个函数的地址。3. * (void(*)())0 - 对0地址处进行了解引用操作。第一行代码的意思是对void(*)(int)的函数指针类型重命名为pfun_t。4.(*(void (*)())0)() - 调用0地址处的函数。A函数 --传递-- B函数(A函数的地址)二级指针: char**p;

2023-10-28 14:04:12 657

原创 33.练习

/ /2是换下来的空瓶 %2是余下的空瓶。//大端是0x00,小端是0x34。if (money > 0) //也可以这样写。喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以得到多少汽水。输入一个数组,实现一个函数,来调整该数组中数字的顺序使得数组中。//第一列和对角线都为1。//从后往前找一个奇数。//从前往后找一个偶数。

2023-10-26 21:12:11 18

原创 32.练习

A:整形指针+1,向后偏移一个字节. //4个字节。//有符号整形和有符号整形比大小的时候,会有符号整形改成无符号整形,再进行比较。//sizeof这个操作符,算出的结果的类型是unsigned int。B:指针-指针得到的是指针和指针之间的字节个数 //指针之间的元素。B: *p.a //.的优先级比*高。//2.计算i的每一位的n次方之和。//1.计算i的位数 - n。输出a的数据,不能填入的内容是: ( B )

2023-10-25 18:40:52 20

原创 31.指针进阶

/arr - 数组名是首元素的地址 - arr[0]的地址。//每个数组指针能够指向一个数组,数组5个元素,每个元素是int类型。//数组指针,该指针能够指向一个数组,数组10个元素,每个元素的类型是int。//是一个存储数组指针的数组,该数组能够存放10个数组指针。//存放整形指针的数组。//本质上是把"hello world"这个字符串的首字符的地址储存在了pa种。//取出的是数组的地址。

2023-10-25 18:38:47 16

原创 30.浮点型的存储

E全为0:这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。对于11位的E (double),要加上个中间数1023. E=-1 数据存的是 -1 + 1023 = 1022。printf("n的值为:%d\n", n);对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E, 剩下的23位是有效数字M。对于64位的浮点数,最高的1位是符号位s,接着的11位是指数E,剩下的52位是有效数字M。

2023-10-24 18:50:23 17

原创 29.数据的存储

/11 22 33 44 - 大端字节序;//把数据的低位字序的内容存放在高位地址处,高位字节序的内容存放放在低位处。小端字节序:把数据的低位字序的内容存放 在 低 地址处,高位字节序的内容存放在 高 地址处 - VS采用的。//i+j是大于0的,因为j是无符号整形,算出的结果也是个无符号数,单看结果是大于0的。大端字节序:把数据的低位字序的内容存放在 高 地址处,高位字节序的内容存放在 低 地址处。//即使i是unsigned,但是用%d打印的话,它还是按有符号的打印。

2023-10-24 18:47:06 15

原创 28.练习(初阶结束,下一篇开始进阶!)

/统计一下ret的2进制中有几个1,就说明m和n的二进制位中有几个位不同。//如果地址是short类型, +1 后解引用2个字节。//2进制:00000000 00000000 00000000 00000001。//进行了几次就有几个1。//16进制:00 00 00 01 小端存储。int NumberOf1(int n) //还可以优化。//相同为0,相异为1。//获取n的二进制中的奇数位和偶数位。int main()//还可以优化。

2023-10-24 18:44:31 16

原创 27.结构体初阶 & 模拟实现字符串相关函数

char* my_strcpy(char* dest,const char* src) //标准的进行库函数的模拟实现。size_t my_strlen(const char* str) //因为求的长度不可能是负数,所以用int不好。const 如果放在*的左边,修饰的是*p,表示指针指向的内容,是不能通过指针来改变的。//const 修饰变量,这个变量就被称为常变量,不能被修改,但是本质上还是变量。如果放在*的右边,修饰的是指针变量p,表示指针变量不能被改变的。

2023-10-24 18:42:02 18

原创 26.调试技巧

{ //右击断点,按条件,可以之间跳条件。while (*dest++ = *src++) //即copy了\0,又使得循环停止。for (i = 0;i++) //设置断点,按f5调试前面的就跳过了。arr[i] = 0;void test2() //调用堆栈反应的是函数的调用逻辑。1. i 和 arr是局部变量 - 局部变量是放在栈区上的。栈区内存的习惯是:先使用高地址空间,再使用低地址空间。

2023-10-24 18:39:24 17

原创 25.指针初阶

/ 1个字节就可以表示2个16进制位。//拿到的是a的4个字节中第一个字节的地址。//p是一个局部的指针变量,局部变量不初始化的话,默认是随机值。// p + i 其实是下标位i的地址。//pa也是个变量,&pa取出pa再内存中起始地址。//只有第一个字节变为0。//四个字节都变为0。//pa是指针变量,一级指针。//这里的p就是一个野指针。概念:野指针就是指针指向的位置是不可知的(随机的,不正确的,没有明确限制的)

2023-10-24 18:36:52 16

原创 24.练习

/(3,4)是逗号表达式,所以结果为4。C.数组acX的长度大于数组acY的长度 yes。5.将数组A中的内容和数组B中的内容进行交换。D.数组acX的长度小于数组acY的长度。实现reverse() 函数完成数组元素的逆置。B.数组acX和数组acY的长度相同。A.数组acX和数组acY等价。

2023-10-24 18:35:20 15

原创 23.操作符详解

/输出结果 : 2 sizeof括号中的表达式是不参与运算的!printf("书名: %s 书号: %s 定价: %d\n", (*pb).name, (*pb).id, (*pb).price);printf("书名: %s 书号: %s 定价: %d\n", pb->name, pb->id, pb->price);printf("书名: %s 书号: %s 定价: %d\n", b.name, b.id, b.price);

2023-10-24 18:34:03 16

原创 22.扫雷实现

/存放布置好的雷的信息。//存放排查出的雷的信息。//(2) 不是雷 - 统计坐标周围有几个雷 - 存储排查雷的信息到show数组,游戏继续。printf("----------扫雷游戏----------\n");printf("----------扫雷游戏----------\n");//不是雷的情况下,统计x,y坐标周围有几个雷。printf("坐标非法,请重新输入\n");//(1) 是雷 - 很遗憾炸死了 - 游戏结束。printf("请输入要排查的坐标:>");//显示排查出的信息。

2023-10-24 18:30:15 19

原创 21.三字棋实现

test.c文件内容:#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"// Init 初始化,row 行,col列,displayboard 打印棋盘void menu(){ printf("********************************\n"); printf("******* 1.play *********\n"); printf("******* 0.exit

2023-10-24 18:27:28 20

原创 20.数组介绍

/ [ ] 里是3。

2023-10-24 18:24:08 23

原创 19.练习

/数组名arr是数组arr首元素的地址。2.计算1/1 - 1/2 + 1/3 - 1/4 + 1/5 ... + 1/99 - 1/100的值,打印出结果。//数组名arr是数组arr首元素的地址。1. 编写程序数一下 1到 100 的所有整数中出现多少个数字9。在屏幕上输出9+9乘法口诀表。函数输出两个数字的方法。

2023-10-24 18:18:40 17

原创 18.函数递归

print(num);//printf函数可以打印参数部分数字的每一位。//递归 - 函数自己调用自己。//统计第3个斐波那契数的计算机次数。//效率太低 - 重复大量的计算!接收一个整形值(无符号),按照顺序打印它的每一位,例如:输入 1234 ,输出1 2 3 4。//递归可以求解,但是效率太低。if (n < 10000) //每次都给test开一个空间。https://stackoverflow.com/ 程序员的知乎。{ //总有一次栈区会溢出的。

2023-10-24 18:15:47 19

原创 17.函数的(嵌套)调用和链式访问

/为真返回1,为假返回0。int binary_search(int a[], int k, int s) //int a[]本质上不是数组,是指针。//printf返回的是打印在屏幕上的字符的个数,即printf("%d",43)是发返回2。#include "add.h" //相当于int Add(int x, int y);

2023-10-24 18:06:34 22

原创 16.函数的组成和分类

/ a 空间的编号为:0x0022f894 , b 空间的编号为:0x0022f888。{ // x 的地址是0x0020f894 , y 的地址是 0x0020f898。void Swap(int* pa, int* pb) //*pa 访问到的就是 a , *pb 访问到的就是 b。//开创了两个空间,一块取名位a,一块为b。void Swap(int x, int y) //到这个函数里又为 x , y 创建了一个空间。

2023-10-24 06:58:51 20

原创 15.习题和go to语句

if (strcmp(input, "我是猪") == 0)//两个字符串比较是不能使用==的,应该使用strcmp() srting compare。= 0)) || (y % 400 == 0)) //&& 是并且,|| 是或者。printf("请注意,你的电脑再1分钟内关机,如果输入:我是猪,就取消关机\n");//sqrt - 是开平方的函数 - 引用 #include <math.h>//2 -> i - 1之间的数字去试除i,看能不能被整除。//1.被4整除,不能被100整除的是闰年。

2023-10-23 20:43:23 34

原创 14.实现猜字符游戏

/6.time_t -- __time64_t -- __int64,所以time_t是个整形。//9.%100的余数是0-99,然后+1,范围就是1-100。//4.如果srand()括号里的数要一个变化的值,才会生成随机数。//time(NULL)的意思是time函数的参数给了NULL。

2023-10-23 20:41:08 45

原创 13.while循环 & for循环 & do while循环

if (strcmp(password, "123456") == 0) //err - 两个字符串的比较,不能使用==,应该使用strcmp //新代码。//清空屏幕 //新代码。//睡眠1秒,单位是毫秒,引用头文件#include <windows.h> //新代码。while (i <= 10) //()里的是判断表达式,expr的意思,stmt是语句的意思。

2023-10-23 20:34:32 26

原创 12.分支语句if else & 分支语句switch

/ printf("青年\n");//printf("不能谈恋爱\n") //else管不到这条语句,要用的话要带个{}case 1: //case 决定入口,break决定出口.//case 后面只能是整形和常量,字符也是整形。//到return 0;case 2: //break 可以不加,按需求。switch (n) //因为n是等于2,所以直接跳到case 2中。

2023-10-23 20:27:14 21

原创 11.初始结构体

/ps是指针,*ps就是s,(*ps).name就找到名字了。//等同与上面的三个,ps是指针,指向name。//->的使用方式,左边是结构体指针,箭头指的是成员变量名。

2023-10-23 20:26:20 17

原创 10.初始指针

/指针是用来存放地址的!//指针的大小是相同的!//pa是用来存放地址的,在C语音中pa是叫指针变量。//* 解引用操作,*pa就是通过pa里边的地址。//%p 专门用来打印地址的。//int 说明pa执行的对象是int类型的。//* 说明 pa是指针变量。

2023-10-23 20:24:19 24

原创 9.初始常见关键字

/堆区:动态内存分配的!4.extern: 是用来声明外部符号的 5.register: 寄存器关键字 6.signed:有符号的,unsigned,无符号的。本质上是将函数的外部链接属性,变成的内部链接属性(和static修饰的全局变量一样)全局变量,在其它源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰后,static修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用!在计算机里,数据可以存放的地方有:寄存器,高速缓存,内存,硬盘,网盘。

2023-10-23 20:22:52 20

原创 8.初始操作符

/结果为4,<<左移的是二进制的操作符,左移的剩余位置用0替代,由10 (2) -- 100 (4),printf("%d\n", sizeof(arr));//结果为10,40/4。//先++,后使用 //num1++是先使用,再++printf("%d\n", sizeof(int));

2023-10-23 20:19:57 14

原创 7.选择语句和循环语句和函数和数组

【代码】7.选择语句和循环语句和函数和数组。

2023-10-23 20:18:17 14

原创 6.初识字符串,转义字符

键盘上每个字符就有一个值--ASCLL码值。转义字符:转义了它原来的意思。

2023-10-23 20:16:40 18

原创 5.初始常量

4.枚举常量:可以一一列举的常量 (认识即可)

2023-10-23 20:12:34 12

原创 4.初识变量的作用域和声明周期

局部变量的生命周期:进入局部范围生命周期开始,出去局部范围生命周期结束。作用域指的是一个变量能在哪里使用哪里就是它的作用域。变量的生命周期:变量的创建和销毁直接的时间段。局部变量的作用域:就是变量所在的局部范围。全局变量的生命周期:程序的生命周期i。全局变量的作用域:整个工程。

2023-10-23 20:10:52 25

原创 3.初始常量变量

变量-能改变的量 2.全局变量。常量-不能改变的量 1.局部变量。写代码的时候不建议把全局变量和局部变量名字写成一样的。当局部变量和全局变量的名字冲突下,局部优先,

2023-10-23 20:04:23 21

原创 2.初次认识数据类型

2023-10-23 20:01:49 17

原创 1.初次认识编程

printf是打印信息的库函数,用时要应用头文件stdio.h,具体是打#include <stidio.h>,printf后面用("内容"),内容后加\n是换行的意思。写代码第一步要写主函数,比如mani主函数,写法int main,一个工程文件可以有多个.C文件,但是多个.C文件只有一个main函数。include是包含的意思 stdio.h是头文件。快捷键ctrl+f5或者fn+ctrl+f5。return 0是程序的结束。编译+链接+运行代码。

2023-10-23 19:56:43 12

空空如也

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

TA关注的人

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