自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 手把手带你拿捏C指针(2)(含冒泡排序)

数组名一般是数组首元素地址,只有两个例外,一个是它在sizeof中一个是&arr。

2024-09-12 14:38:18 1223 24

原创 手把手带你拿C捏指针(1)(初始指针)

我们发现函数exg并没有帮我们把这两个变量的值交换,这是因为我们传参时,会把变量的值传过去,但是只是把值传过去,在函数exg的栈帧中会重新创建a和b来接收传过来的值,所以实现交换操作时,只是将exg中的a和b交换,然后函数结束时就销毁了,并没有起到实际作用。这就是指针变量的类型差异带来的变化。在现实⽣活中,我们使⽤地址要找到⼀个房间,在房间⾥可以拿去或者存放物品,C语⾔中其实也是⼀样的,我们只要拿到了地址(指针),就可以通过地址(指针)找到地址(指针)指向的对象,这⾥必须学习⼀个操作符叫解引⽤操作符(*)

2024-09-09 22:51:43 1444 62

原创 C语言操作符详解2(含结构体、整型提升、算术转换)

int x;int y;}p1;//声明时定义变量p1int x;int y;//分号不能少//将struct Point当作即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯⼀的计算路径,那这个表达式就是存在潜在⻛险的,建议不要写出特别复杂的表达式。

2024-09-05 14:37:37 1464 40

原创 C语言操作符详解1(含进制转换,原反补码)

左移操作符对一个十进制整数的影响是有规律的,无论正负数,都可以对原数值起到乘以2的移位次方的作用,比如将10左移了1位,那么就对原数值乘以了2的一次方,变成了20,依次类推,如果是-10左移了1位,那么就会变成-20对一个无符号数进行右移操作,会对它进行除以2的移位次方,比如将10右移一位,就对它除以了2的一次方,最后变成了5,那如果这个数不是偶数怎么办呢?比如123向右移一位,它除以2就是61.5,最后结果会返回这个数两边较小的整数,61.5的两边分别是61和62,最终得到小的那个数61,所以综上,

2024-09-02 23:09:18 1447 21

原创 手把手带你实现C语言扫雷进阶(1)(接上回基础版扫雷,附上源码)

我们先来看看之前讲扫雷基础的时候留下的一些问题:是否可以选择游戏难度    ◦ 简单 9 * 9 棋盘,10个雷    ◦ 中等 16 * 16棋盘,40个雷    ◦ 困难 30 * 16棋盘,99个雷如果排查位置不是雷,周围也没有雷,可以展开周围的⼀⽚是否可以标记雷是否可以加上排雷总共耗费的时间    要注意的一点是选择游戏难度以目前我们讲过的内容还暂时写不出来,在后面学习到相关内容时,我们再进行讲解,接下来就解决后三个问题    我们的进阶还是在之前写过的基础版之上添加,如

2024-09-01 00:15:28 1438 22

原创 C语言函数递归(含扫雷进阶思路)

递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。写⼀个史上最简单的C语⾔递归代码:上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出,因为代码每执行完printf时,又调用了main函数,也就是又从main函数的头开始,然后再打印,最后一陷入死递归,如果代码突然结束,可能就是程序一直在创建函数栈帧,导致了栈溢出。

2024-08-29 23:16:33 1397 10

原创 手把手带你用C语言实现控制台小游戏扫雷(附源码)

如果存放在布置雷的数组中,这样雷的信息和雷的个数信息就可能或产⽣混淆和打印上的困难,比如周围有1个雷,就要显示1,但是1原本是表示雷的,就导致了混淆。排查雷的重点就是,我们要看玩家输入的坐标位置是不是雷,也就是是不是字符1,如果是字符1,说明踩到雷了,游戏失败,如果是字符0,也就是不是雷,那么该处就显示为周围8个坐标的雷的个数,所以它既要涉及到show数组,又要涉及到hide数组,hide数组用来查看玩家输入的坐标是否是雷,show数组用于该坐标不是雷的时候,在该坐标处显示周围有几个雷。

2024-08-26 23:24:29 1078 13

原创 VS实用调试技巧

bug本意是“昆⾍”或“⾍⼦”,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或问题,简称程序漏洞。“Bug” 的创始⼈格蕾丝·赫柏(Grace Murray Hopper),她是⼀位为美国海军⼯作的电脑专家,1947年9⽉9⽇,格蕾丝·赫柏对Harvard Mark II设置好17000个继电器进⾏编程后,技术⼈员正在进⾏整机运⾏时,它突然停⽌了⼯作。

2024-08-24 17:45:09 819 2

原创 C语言函数

了解了库函数,我们的关注度应该聚焦在⾃定义函数上,⾃定义函数其实更加重要,也能给程序员写代码更多的创造性ret type fun_name(形式参数)• ret_type 是函数返回类型• fun_name 是函数名• 括号中放的是形式参数,简称形参• {}括起来的是函数体我们可以把函数想象成⼩型的⼀个加⼯⼚,⼯⼚得输⼊原材料,经过⼯⼚加⼯才能⽣产出产品,那函数也是⼀样的,函数⼀般会输⼊⼀些值(可以是0个,也可以是多个),经过函数内的计算,得出结果。

2024-08-22 16:08:41 1020 3

原创 C语言二维数组

前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。我们如何将二维数组arr的元素完整打印出来呢?可以看出在内存中二维数组中的每个元素都是挨着的,所以⼆维数组中的每个元素都是连续存放,了解了二维数组在内存中的存储,对我们以后学习指针有很大帮组。

2024-08-10 00:02:19 699 1

原创 C语言一维数组(含数组二分查找)

在⼀个升序的数组中查找指定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低。比如我们之前写的猜数字游戏,会生成一个随机数来让玩家猜,范围是1~100,那玩家会从1开始一个一个猜吗,不会吧,那样就太慢了,我们一般会从整体的一半开始猜,比如猜50,告诉你大了还是小了,这样只需要一步就可以排除庞大数字中的一半,比如假设猜1 ~ 10000,猜5000后就可以知道猜大了还是小了,直接排除了5000个数字,效率很快,这就是⼆分查找,也叫折半查找。

2024-08-09 13:38:55 1381

原创 手把手带你用C语言实现猜数字游戏,猜不对直接关机!(搞怪室友版)

在程序中我们⼀般是使⽤程序运⾏的时间作为种⼦的,因为时间时刻在发⽣变化的,在C语⾔中有⼀个函数叫time(),就可以获得这个时间,用户每玩一次游戏,时间肯定就过去了,我们的种子也就跟着变了,生成的随机数也就变了,最终实现我们的生成随机数的需求。在循环中, 我们需要做什么呢,首先要打印一次菜单,然后让玩家选择,选择的值有0或者1,有这种具体的整型值,我们最好使用Switch分支语句,但是也要注意如果用户输入其它值,那么也要提示他重新选择,就要用到default。

2024-08-06 22:08:50 1223

原创 C语言的循环语句

在上一期我们提到了C语言中有三种结构,分别是顺序,选择,循环,并且将选择语句进行了一一讲解,今天我们来学习三种循环语句。

2024-08-03 01:21:26 1120

原创 C语言中神奇的“短路”

C语言的短路现象一般出现在逻辑运算符上,它有⼀个特点,就是总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

2024-08-01 21:16:30 521

原创 C语言的分支语句

C语言是一门结构化的程序设计语言,其中将实现的结构分为了顺序,选择和循环三类,顺序结构就是按语句顺序实现程序,这里不多讲,本次内容我们着重介绍,也就是,以及相关会用到的知识。

2024-07-31 18:02:58 742

原创 C语言关于VS对函数scanf报错的解决方法

那既然VS说使用scanf_s来替换scanf,那我们要不要使用scanf_s呢?答案是并不推荐使用它,因为C语言标准只提供了scanf函数,并没有提供scanf_s,scanf_s只是VS提供的函数,如果换了一个编译器很可能就会报错,这样会导致代码的可移植性降低,也会给个人带来不好的习惯,所以。要实现这样的操作我们就要知道,其实在VS上新建.c .cpp文件时,都是拷贝一个文件,名字叫newc++file.cpp,如果在这个文件的第一行加入那句话,就可以实现新建的.c .cpp文件中都有那句话了。

2024-07-23 16:46:19 779 2

原创 C语言printf和scanf函数详解

所以,储存字符串时,很可能会超过数组的边界,导致预想不到的结果,这也是scanf不安全的地方,为了防⽌这种情况,可以限定读⼊字符串的最⻓⻓度。这里用户输入了" -13.45678# 0",首先scanf对空格进行了忽略,来到"-13.45678# 0",此时开始读整型数据,当碰到小数点时,系统就认为,整数已经读完了,所以整型数据读出来是-13,接下来浮点数又开始从小数点处开始读取数据,碰到#时不满足浮点数的要求就中断了,剩下没有被读取的字符就被舍弃了。如果没有读取任何项,或者匹配失败,则返回0。

2024-07-23 00:06:31 1047

原创 C语言的数据类型和变量

C语言为了描述世界里丰富的数据提供了许多种的数据类型,现在我们来详细介绍一下整型:存放整数数据,在C语言中用int表示,代码演示:int main()int a =0;//将变量a定义为整型,接受整数数据return 0;长整型:long 或者long int,与整形同理,只是所占空间不同更长的整型:long 或者long long ,也与整型同理,只是所占空间不同字符型:存放字符型的数据,在C语言中用char表示,C语言中字符型数据用单引号括起,代码演示:int main()

2024-07-21 00:39:47 907 1

原创 初识C语言(常见的C语言概念)

新建项目:新建项目所要注意的有(1)最好保证项目名称有意义(2)把代码放在规划好了的位置(3)为了方便后期查看,路径中最好不要有中文或者空格创建源文件:创建好项目后,右击源文件,选择添加—新建项,选择C++文件,这里没有C文件选项,因为C++和C基本不分家,将后缀名.cpp改为.c就可以了,创建好后就可以开始写我们的第一个C语言程序了注意:其中.c的文件叫源文件,.h的文件叫头文件(head),后面会慢慢讲到。

2024-07-18 13:13:54 1081 1

原创 我的第一篇博客

我以前是一名四川中职的计算机专业学生,以前初中不懂事,不知道学习,上了职高才后悔起来,高一纯纯摆烂,还好我的老师及时点醒我(职高也会有好老师的),我才从高二开始好好学习,也还好天无绝人之路,职高也可以考本科,虽然只能考双非二本,但至少给了我一个本科学历。经过原学校3年加异校复读一年的努力,现在我是四川轻化工的一名准大一学生,专业是计算机科学与技术,希望以后能和大家一起学习,共同进步。

2024-07-17 13:49:58 209 1

空空如也

空空如也

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

TA关注的人

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