自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言实现扫雷游戏完整版(可以实现爆炸展开空白一片的)

目录扫雷游戏相信大家都玩过,大概就是点击一个格子,如果这个格子是雷就被炸死,不是雷,就会显示周围八个格子有几个雷,如果玩家把没有雷的格子点完了就赢了。首先第一步我们就需要知道雷盘(棋盘)是一个个格子的,所以我们就可以用二维数组来实现。我们看到扫雷游戏,有展现给玩家的雷盘,上面我们看不到哪里有雷,但是如果只有一个二维数组就无法实现,所以我们定义两个二维数组,一个展现给玩家,一个内部操作:我们的ROWS和COLS这样子定义其一是因为方便修改,其二是因为我们展现出的棋盘要比内部棋盘少两行和两列。

2024-05-10 21:51:56 910

原创 C语言实现三子棋游戏(可以改变为四子棋或者多子棋版)

我们首先要给玩家一个菜单,玩家才能选择是否开始游戏。我们需要上来就打印菜单,玩家再选择,所以我们使用do while 循环,在这个循环里需要一个选择语句,所以基本逻辑就是这样:菜单:这里玩家输入1 或者 0 ,就很妙,while循环()里放 input,输入1 就又开始循环,输出菜单,输入0 就结束循环了,退出游戏。

2024-04-15 22:43:36 1780

原创 C语言实现猜数字游戏(有提示,限制次数版)

/ 这次实现猜数字有5次机会次数,还可以提示,提示有一次机会,告诉是否在30 - 60 之间#define NUM 5 // 方便修改// 提示的标志void prompt(int num)//提示printf("在 30 到 60 之间\n");elseprintf("不在30 到 60 之间\n");flag = 1;//做一个1——100随机数字,需要函数,rand() srand(),头文件stdlib//没必要每次都调用srand 一次就行i < NUM;

2024-03-31 22:07:53 2266

原创 C++之内存管理:动态内存管理,new函数,delete函数

在C++中这些函数都是可以继续使用的,但是有时候很麻烦,而且无力,所以C++中是使用。,如果 malloc申请空间成功就直接返回,否则执行用户提供的空间不足应对措施,如果用户提供该措施 就继续申请,这两个全局函数都是系统提供的 ,不需要知道到底是怎么做到的,知道底层最终还是malloc和free来实现的就行。6. 申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,5. malloc申请空间失败时,返回的是NULL,因此使用时必须判空,来申请空间,delete在底层通过。

2025-11-10 22:18:42 474

原创 C++之类和对象:初始化列表,static成员,友元,const成员 ……

定义时不添加static关键字,类中只是声明3. 类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问4.

2025-05-08 18:42:11 958

原创 C++之类和对象:构造函数,析构函数,拷贝构造,赋值运算符重载

如果这个自定义类型的。

2025-04-29 22:47:14 1171

原创 C++之类和对象:定义,实例化,this指针,封装

我们在C语言中可以用struct创建自定义结构体,在C++中可以在结构体中定义函数了,这种就被称为类。class Datapublic:void Print(int day, int month, int year)//成员函数private:int _day;//成员变量int _month;int _year;上述就是一个简单的类,可以用class或者struct,我们一般是用class。

2025-04-24 20:26:49 595

原创 C++入门基础:引用,auto自动关键字,内联函数,范围for循环

1.引用必须初始化,指针没规定。2.引用在初始化引用一个实体后,就不能再引用其他实体,而指针可以在任何时候改变指向。3.没有。

2025-04-20 21:31:00 892

原创 C++入门基础:命名空间,缺省参数,函数重载,输入输出

C++语言是基于C语言的,融入了面向对象编程思想,有了很多有用的库,所以接下来我们将学习C++如何优化C语言的不足的。在C/C++语言中,变量,函数,类会有很多,这就导致总会有名称冲突,这时候C++就有命名空间的目的是上述需要注意的是使用 using 将命名空间的内容展开之后,如果有,所以一般为了安全我们一般会会报错因为两个rand在不同作用域。

2025-04-17 19:10:19 828

原创 C语言自定义类型详解一:结构体(内存对齐)

int data;itn x;}P1;//声明类型的同时定义变量P1//定义变量P2struct Stuint age;//定义时初始化int y;itn x;int data;//可以嵌套定义。

2025-04-15 22:03:25 563

原创 C语言内存函数介绍和模拟实现:(memcpy,memmove,memcmp,memset)

这个函数是一个字节一个字节的比较,并且遇到 '\0' 不会停止。int n = 0;这是内存设置函数,可以把ptr指向的内存块的num个字节设置为 valueint main()return 0;

2024-11-08 11:30:00 344 1

原创 弄懂atoi函数的作用,重点包括如何模拟实现

第一步:我们对参数是否是空指针或者空字符串进行判断第二步:过滤空字符第三步:判断正负第四步:对整数进行转换重点是该怎么整数字符转换成整数,‘1’ - ‘0’ 就是数字1,我们用一个变量ret接受,下一个数字怎么办,ret = ret * 10 + 数字,循环就行了。

2024-09-27 09:00:00 369

原创 C语言特殊字符串函数和字符函数

重点:1.delimiters 参数是个字符串,定义了用作分割符的字符集合2.第一个参数指定一个字符串,里面包含0个或者多个分隔符3.strtok函数找到str中的分隔符,会把它改成'\0',然后返回指向这个分隔符前面字符串的指针4.strtok函数会改变被操作的字符串,所有使用strtok函数切分的字符串一般是临时拷贝的内容并且可修改。5.strtok函数的第一个参数不是NULL,函数将找到str中的第一个切割的字符串,函数将保存它在字符串中的位置。

2024-09-25 10:30:00 446

原创 C语言长度受限制的字符串函数:(strncpy,strncat,strncmp)

重点:1.拷贝num个字符从源字符串到目标空间2.如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个3.这个函数不会拷贝'\0'。

2024-09-25 10:30:00 506

原创 C语言常见字符串函数模拟实现一:(strlen,strcpy,strcat,strcmp,strstr )

重点:1.字符串已经'\0'作为结束标志,strlen返回的是字符串'\0'前面出现的字符个数(不包含'\0')2.参数指向的字符串必须要以'\0'结束。3.注意函数的返回值是size_t,是无符号的,加减是无法对比的。

2024-09-21 15:39:01 585

原创 C语言指针进阶笔试题(含解析)

解析:*(a + 1),a是首元素的地址,加1 之后就是第二个元素的地址,解引用就是2。

2024-09-19 16:24:14 463

原创 C语言进阶四:(指针和数组笔试题解析1)

主要是关于数组名的意义,1.sizeof(数组名)这里计算的就是整个数组的大小2.&数组名,这里就是取出的是整个数组的地址3.除此之外的所有数组名都表示首元素的地址(补充:表达式是有值属性和类型属性,sizeof是根据类型属性判断的)。

2024-09-19 10:00:00 223

原创 C语言指针进阶三:(回调函数,qsort函数的模拟)

回调函数就是通过函数指针调用的函数,如果你把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其指向的函数时,我们所说这就是回调函数。

2024-09-04 10:30:00 511

原创 C语言指针进阶二:(函数指针数组,转移表)

函数指针数组就是存放函数指针的一个数组,数组里都是函数指针,那么该怎么定义:因为 [] 的优先级高于 * ,所以parr先与 [] 结合说明是一个数组,元素类型是 int(*)() 的函数指针。

2024-09-04 10:00:00 738

原创 C语言指针进阶一:(字符指针,数组指针,指针数组,函数指针)

在指针类型中我们知道字符指针类型,一般就是用于 char 的:上述代码会输出什么?之前的文章有讲过。

2024-09-02 10:30:00 790

原创 C语言分析数据在内存中的存储二:(浮点数在内存中的存储)

计算机存储 M 的时候,因为 M 总是 1.XXXXXX ,所以计算机默认 M 的第一位就是1 ,舍去1,只保存后面的部分,类如1.01,只保存 01,这样 M 就可以多保存一位有效数字。E是一个无符号整数,说明 E 为8位的时候,取值为:0~255,E 为11为,取值为:0~2047,但是我们知道实际情况E可能是负数的,所以规定存储E的时候要加上一个中间值,8位的E中间值是127,11位的E,中间值是1023。比如 2^10 E 是10,所以保存成32位,就是10+127=137,也就是10001001。

2024-09-02 10:00:00 1403

原创 有无符号整形加减,截断,提升等问题解析

分析:-128 的原码是 10000000 00000000 00000000 10000000补码是 11111111 11111111 11111111 10000000,因为是char 型,截断之后:10000000答案:4294967168的二进值就是:11111111 11111111 11111111 10000000。

2024-08-24 10:00:00 524

原创 C语言分析数据在内存中的存储一:(整形在内存中的存储)

以及他们的存储空间大小。

2024-08-23 10:00:00 1787

原创 大小端字节序存储介绍

大端存储模式:是指数据的低位保存在内存的高地址中,数据的高位,保存在内存的低地址中。小端存储模式:是只数据的低位保存在内存的低地址中,数据的高位,保存在内存的高地址中。什么是数据的低位高位?像十进制数字 478 ,低位就是最右边,在内存中存储的二进制也是这样。

2024-08-23 10:00:00 660

原创 题目:逆序字符串的单词

C语言算法题,逆序字符串的单词

2024-08-16 22:37:05 330

原创 C语言中const修饰指针的作用

const修饰指针的不同效果

2024-08-12 19:34:04 374

原创 C语言结构体初识(结构体变量)

有了结构体类型,定义变量就简单了:初始化(没有初始化的话,一般值是0):结构体是可以嵌套初始化的结构体成员的访问结构体变量访问成员是通过 点操作符( . )访问的如果是结构体变量指针该怎么访问成员:而且我们需要注意:只有通过 strcpy 可以修改,这个下次讲。

2024-08-08 22:34:56 370

原创 C语言指针介绍二:(指针数组)

P2 可以和 P3 比但是不可以和 P1 比,这就是规定,我们也不知道为什么。

2024-06-06 20:06:01 639

原创 C语言指针介绍一:(指针变量,指针类型的意义)

指针是内存中一个最小单元(一个字节)的编号,也就是地址,每一个单元都有属于自己的地址。平时我们说的指针一般说的是指针变量,用来存放内存地址的变量就叫指针变量。

2024-06-06 19:18:11 1023

原创 C语言函数递归实现汉诺塔问题

当只有三个盘子的时候,就像图片一样移动,当盘子多了起来我们就很难分得清逻辑了。这个时候我们就可以用递归思维来解决这个问题,递归的要点就是。

2024-06-04 21:24:36 450

原创 C语言操作符详解二:(整形提升,sizeof和数组名,&&和||的特点)

总结:两个相邻的操作符先执行哪个,取决于优先级,如果相同,取决于他们的结合性(可以在网上查)。如果我们的表达式无法通过操作符的属性确定唯一的计算路径,那么就是有问题的。C语言中整数运算是以整形类型精度进行的,为了这个精度,表达式中的字符和短整型在使用前会被转换为普通整形,这种转换被叫做。b 和 c 就会被提升为普通整形,然后在执行加法,加法之后结果会被截断,然后再存储在a 中。如果在这个排行中排名低,那么要转换成高的才可以进行运算。整形提升是按照变量的数据类型的符号位来提升。上述代码中,c 是多少?

2024-06-02 17:40:06 508

原创 C语言操作符详解一:(左移右移二进制,整数在内存中的存储)

算术操作符有:加法+ 减法- 乘法* 除法/ 取余%算术操作符该注意的点:1.除了%操作符之外,其他的操作符都可以作用于整数和浮点数。2.对于/操作符来说,两个数都是整数的话,结果只能是整数,如果其中一个是浮点数的话,那结果也是浮点数。3.%操作符的两个数必须是整数,返回的是整除之后的余数。> :右移操作符注意:移位操作符只能操作整数!在详细了解操作符之前我们要知道移位操作符移动的是二进制的位。对于一个整数四个字节就是32个bit位,二进制也是32个bit位(类如:1 在

2024-05-15 22:14:50 1965 1

原创 C语言数组详解

数组就是一组相同元素的集合。数组创建中 [] 里不能是变量,但是在c99标准之后就可以了被称为变长数组,但是不常用,而且变长数组不能初始化。创建数组的时候,如果不想指定 [] 的大小,就得初始化,数组的元素个数由初始化内容确认,例如:arr1,他的元素个数就是四个。数组 arr 属于不完全初始化,但是他的元素个数还是10个,只不过剩下的初始化为0了。arr2 和 arr3 要区分,他们的元素个数是不一样的。

2024-03-31 16:08:39 772

原创 C语言递归的两道练习题(n的k次方,字符串逆序)

求 n 的 k 次方其实就是 k 个 n 相乘。如果n = 2 ,k = 4, 2 的4次方等于,2 乘 2 的3次方。所以就可以用递归。因为有小数,所以用double 类型来接受。

2024-03-29 23:13:45 435

原创 C语言最大公约数(辗转相除法)

输入两个整数,求他们的最大公约数:如果我们不用辗转相除法的话,两个整数的最大公约数,我们就可以定义一个整数为两个整数中最小的那个数,然后两个整数一起除我们新定义的整数,如果都除尽了,这就是他们的最大公约数,如果不是,就新整数减一,然后再一起除他判断。这就是代码的实现。

2024-03-29 20:32:42 612 1

原创 C语言算法二分查找

二分查找就是每次都是一半,一半的找。找到数组的第一个下标和最后一个下标,得到中间的下标,每次用中间下标的值,对比想要找的值,中间值比想要的值小,就把第一个下标改到中间下标的后一个下标上,再比较中间值和想要的值,如果中间值比想要值大,就把最后一个下标改到中间下标的前一个下标上,再比较中间值和想要的值。然后循环下去,直到找到了或者没找到。

2024-03-27 22:16:39 424

原创 C语言函数详解之二

这就是递归。

2024-03-27 21:54:08 612

原创 C语言函数详解之一

自定义函数和库函数一样需要函数三要素:函数名,返回值类型,函数参数。举一个例子:写一个函数找出两个整数的最大值a : b);int main()//找两个整数的最大值int a = 0;int b = 0;当然函数也可以没有返回值,没有参数,看自己怎么写函数实参和形参,传值调用和传址调用我们再看一个例子:写一个函数交换两个整形变量的内容//写一个函数交换两个变量的值void Swap(int x, int y)//形参x = y;y = tem;

2024-03-24 21:18:04 784 1

原创 C语言可以实现两个比较有趣的代码(关机程序,动画字符)

有趣的代码

2024-03-22 23:16:59 243

原创 C语言循环语句详解

我们看看下面代码输出什么?break;i++;输出:说明什么,说明只要在循环中遇到break,就会停止后面所有的循环,直接终止循环,break在while中用于永久停止循环的。continue介绍int main()int i = 1;continue;//跳过下面所有的代码,调整部分也跳过了i++;这样的代码会输出什么?我们会看到程序进入了死循环,

2024-03-22 12:17:08 1162 1

空空如也

空空如也

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

TA关注的人

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