自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 128:忆往昔,迎春来

我将学习与写博客给平衡下来是有一段适应时间的,起初,总是说学习完之后没时间写博客,只是偶尔感觉有必要写的时候才写,后来我意识到就是懒,一直待在自己的舒适圈,所以我现在是学习到一节知识点,就写一篇博客,我感觉复盘一下是非常有必要的。首先就是从正式的第一篇博客开始到现在,我的博客内容编写能力进步了很多,我现在回看第一篇技术博客,无论是文章内容,还是结构设置,其实能明显感觉到稚嫩,而现在所写的博客才算是正式的入门。我敲过的最长的程序,就是扫雷游戏了,其实也是跟着老师敲的,但敲出来之后是很有成就感的。

2024-04-01 23:41:14 442 2

原创 【C语言】联合体、枚举: 联合体与结构体区别,枚举的优点

比如,现实生活中,星期、月份、性别、颜色等都是可以一一列举的,这些数据的表示可以使用枚举。但编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用一块内存空间。联合体的所有成员共用同一块内存空间,那么联合体的大小至少是最大成员的大小。这些可能取值都是有值的,默认从0开始,依次递增1,也可以赋初始值。联合体是由一个或多个成员构成,这些成员可以是不同的类型。给联合体的一个成员赋值,其他成员的值也会跟着变化。如下面的例子:结构体的地址与成员地址相等。花括号里面的内容是枚举类型的可能取值,也叫。

2024-03-31 16:49:02 557

原创 【C语言】结构体详解 (二) 内存对齐、结构体传参

上一篇博客,写了结构体变量的创建、初始化和声明等内容,今天的这篇博客来带大家深入理解结构体的知识点。希望大家多多支持。正文1、结构体的内存对齐首先,抛一个问题:结构体的大小如何计算?要知道这个题的答案,首先要了解结构体内存对齐。1.1、对齐规则1、结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处2、其他成员变量要对齐到某一个数字(对齐数)的整数倍的地址处3、结构体总大小为最大对齐数的整数倍。

2024-03-29 16:47:14 1064 5

原创 【C语言】结构体详解(一)

先引入我们所熟悉的类型:char、short、int、long等等,这些是C语言提供的内置类型,但我们用单一的内置类型无法描述复杂的对象。结构的每个成员可以是不同类型的变量,如:标量、数组、指针、或其他结构体。为了解决这个问题,C语言增加了结构体这种自定义的数据类型,让程序员可以创造出合适的类型。如,描述一个学生,需要描述其名字、年龄、性别、学号等;顾名思义,顺序初始化是按照结构体成员的顺序进行的初始化。一个结构体中包含:结构体关键字、名字、成员、分号。p->name : 相当于 (*p).name。

2024-03-27 19:56:12 570 6

原创 【C语言】数据在内存中的存储

正文1、整数在内存中的存储整数的二进制表示方法有:原码、反码、补码。其中对有符号整数来说:这三种表示方法都分为符号位和数值位两部分。数值位的最高一位是符号位,用0表示‘正’,1表示‘负’。正数:原码、反码、补码均相等,三码合一。负数:原码:直接将数值转换为二进制,得到的就是原码反码:原码的符号位不变,其他位按位取反补码:反码+1整数在内存中以补码的形式储存。2、大小端字节序补码在存储时存在大小端问题2.1、什么是大小端?

2024-03-27 14:02:59 798

原创 【C语言】内存函数详解

图1: dest为高地址,在src前面,在对src、dest进行交换时,如果将src从 前-->后 的顺序(正序)进行交换时 ,换到3时源数据被覆盖,需要将src从 后-->前 的顺序(反序)进行交换。图2: dest为低地址,在src后面,在对src、dest进行交换时,将src从 前-->后 的顺序(正序)进行交换。memcpy与strcpy 是有相同点的,我们已知strcpy函数是用来对字符串进行拷贝的,且只能进行字符串的拷贝。所以是将12345,拷贝到34567的空间中,覆盖了原来的数据。

2024-03-23 00:31:00 1366 3

原创 【C语言】从将十进制数转换为七进制数到转换为k进制数

由此,为了联系数字逆序输出的知识,我们得到这样的一个思路:依次输出余数,得到一个反序的数,然后在将这个数倒序输出,就得到了该十进制数对应的七进制。将十进制数一直除以7,得到的余数倒着输出,即为其对应的七进制数。转换为k进制,只需要加一个输入值,并将所有的7改为k即可。数学中将十进制转换为七进制是如何求得呢?增加了一个变量n来控制其在哪一位上。

2024-03-21 19:09:29 299 1

原创 【C语言】库函数中的字符函数与字符串函数

1、字符分类函数2、字符转换函数。

2024-03-20 18:13:50 256 1

原创 【C语言】库函数strstr的模拟实现

赋给指针begin的起始地址为 str1, 使得指针s1从begin开始移动,同时使得s2从str2开始移动,将s1指向的内容与s2指向的内容进行比较, 如果s1 不等于 s2, 则使begin++,s1从begin指向的位置开始向后移动,而s2返回起始位置(str2)开始移动,继续进行一一比较。即在字符串str1中查找字符串str2,并返回在str1中第一次遇到str2时的地址。说明:将两个字符串中的字符进行一一比较,找到要查找的字符串。有这种算法,在一个字符串中找到另一个字符串,代码更高效。

2024-03-20 17:22:34 674 1

原创 【C语言】库函数strcpy的模拟实现及优化

如上图:strcpy函数的 参数为 char*类型,返回类型为char*strcpy函数: 将源字符串拷贝到目标空间中。

2024-03-19 14:04:39 196 1

原创 【C语言】库函数strlen的模拟实现

根据Cplusplus官网说明,如上图:strlen函数的参数为char*类型,且*str不可改变;返回类型为size_t 无符号整型。因为s 指向的地址一直在改变, 需要将 其首字符的地址存到 ret 中。知道了strlen函数的功能,参数和返回类型,就可以进行模拟实现了。strlen函数: 计算字符串的长度。

2024-03-19 13:00:22 315 1

原创 【C语言】深入理解指针(二)

sizeof(数组名) : 当sizeof中单独放数组名时,其中的数组名代表的是整个数组的地址,计算整个数组的大小。p+1中存的是arr[1] 的地址, *(p+1)后得到arr[1] =2(数组第二个元素)如果直接打印出数组首元素的地址,或整个数组的地址时,打印出的结果是没有区别的。&数组名 :其中的数组名代表整个数组的地址,取出整个数组的地址。| 指针- 指针 | = 得到两个指针之间的元素个数。2.3 首元素地址与整个数组的地址的区别。&arr[0] —— 首元素的地址。1.1 指针+-整数。

2024-03-18 15:19:06 218

原创 【C语言】深入理解指针(一)

就像为了准确找到房间,我们将房间编号,那么,我们为了方便查找内存,我们把每个内存单元设置一个地址,这样,CPU就能快速找到一个内存空间。引子:来类比一下生活中的房间,为了方便管理,我们把一栋房子分成一个一个的小房间,而为了查找房间能够快速方便,我们把房间进行编号。在计算机中,我们把内存单元的编号叫做地址;内存是计算机中的一个硬件单元,计算机上的CPU处理数据时,数据从CPU上读取,处理后的数据也会放在内存中。正经讲法:把a的修改交给了p来操作,这样对a的修改就多了一种途径,写的代码就更加的灵活。

2024-01-29 07:00:00 1036

原创 斐波那契数(递归与非递归两种写法)

在计算第40个斐波那契数时,第三个斐波那契数被反复计算了39088169次 ,若递归层次越深,冗余计算就会越多。那么,来用我们最初的想法。这段代码是正确的,但当你输入一个相对较大的数,如 50,电脑要运行几分钟才能计算出结果,效率非常低,这个原因很简单,前两项为1固定,之后每一项依次为c,使用while循环来计算第n项斐波那契数, 计算量就大大减少了。我们已知,在斐波那契数列中,所求=前两项之和,如此,我们可以创建一个变量c,c=a+b。若根据上图,我们很容易被引导用递归的方法来写,进而写出这段代码。

2024-01-28 13:25:31 485 1

原创 求整数在内存中1的个数(三种方法)

00000000 00000000 00000000 00000001 (1补码)(这里%2后的值即为其二进制数,每当n%2=1,count++,即1的个数加一。若按位与之后的结果为1,则13的二进制的最后一位是1,进行count++每进行一次n&(n-1)后,n就少一个1,直到n=0时,循环结束。按位与之后结果为0,最后一位不是1,不进行count++.数据在打印时是原码,在内存中存放的是补码。循环%2,当n=n/2=0时循环结束)补码:1010(有2个1)以13为例:补码为1101。

2024-01-27 13:06:27 349

原创 不创建临时变量,实现两个数的交换(奇葩面试题)

但这段带码不合适:若a、b均很大且刚好未超出整型范围,但a+b超出了整型范围,就会导致数据丢失,不适用于全部的数。当然,除了题目的特殊要求,我们一般写这道题时还是用创建变量的方法来做,这种方法的效率更高,代码的可读性更强。实现两个数交换,我们最常用的应该就是创建第三个变量,进行交换。用异或(^)来求,上代码。

2024-01-26 22:09:54 153 1

原创 扫雷游戏(C语言版)

注意:因为在排查坐标周围雷的个数时,棋盘四周的坐标不足8个,因此在设置棋盘时为11*11棋盘,比原本的棋盘多一圈,并将这一圈设置为‘0’(非雷),便于排查。show棋盘:用来排查雷(输入要排查的坐标后,在show棋盘上显示该坐标周围雷的个数)mine棋盘:用来保存布置好的雷(棋盘中全为字符‘0’、‘1’,其中‘1’为雷)注:这里的x、y 的范围均在1~9,意为在11*11的棋盘中的9*9内布置雷。3、排查雷(输入要排查的坐标,后显示其周围雷的个数)2、布置雷(随机在棋盘上生成10个雷)

2024-01-26 10:50:05 360 1

原创 二分查找(折半查找)

因为 5

2023-12-08 22:30:57 276

原创 输出100~200内的素数(C语言)

若不为0,说明 2 ~ i-1 内所有的数都不能被整除,则flag值不变,flag = 1,此时i为素数,输出i。例如:如果定义一个数字为i,那么它不能被2~i-1内的所有数整除,如此就需要循环语句,使i分别与2~i-1内的数字相除取模。像上面的代码意思是当 i 只是不能被 2 ~ i-1中的一个数整除,然后就直接输出了,没有循环到所有的数。在编写这个代码的过程中,我发现了好几个我存在的错误和问题,这篇博客来和大家分享一下如何用C语言写这个代码及我所出现的问题。1,把a和flag定义在了for循环的外面。

2023-12-03 14:28:39 348

原创 C语言——限定宽度

输出结果为" 123"。123只有三位,但限宽为5,在其前面补了两个空格。通常用%nd(n指任意整数)表示。当其不够最小宽度时,打印时会在。注意:小数点也算一位,“ 123.2”共6位,前面补了一个空格。若想要在其最右边补空格,只需添加一个负号。如 %6.1f, 表示限定宽度为6位,保留1位小数。2)若输入的值超过5位,则按原数打印。例如:%5d,表示占位符的最小宽度为5位。1)若输入的值不够5位,打印时在。限定宽度可以与限定小数点位数连用。

2023-11-29 22:47:55 588 1

原创 switch分支——穿透

注意:在使用switch分支时,case后面的常量必须是整型常量,字符也可以,如'a',毕竟经过ASCII转化后也是整数,但一定不能是字符串。(欢迎各位大佬来指正)是指在执行完一个case分支后跳出switch语句,那么如果一个case分支中没有break语句,那么程序执行时会进行。即同时执行多个case分支中的语句块,直到遇到下一个break语句。用穿透可以将代码简化许多,当然,这段代码也可以用if分支来写。switch(表达式){

2023-11-23 18:59:00 400

原创 偶遇编程

就是因为选的计科这个专业,在高考后的暑假中看了许多有关计科的视频,因此我认识了C、C++、python、java等编程语言,又认识了蓝桥杯、传智杯、天梯赛ACM等竞赛,我在想:既然要学习编程,从哪里入手呢?继续搜,刚开始是在哔站上有up主推荐白纸编程这个软件,我就学了一会儿,又发现哔站上有C语言教程,但看不懂,于是学习的新鲜感没了,荒废……嘿,大家好,我是一名新人,是计算机科学与技术专业在读的大一新生,来自河南南阳,当初是在和父母的商量下报了计科,采取保专业的原则,我来到了新疆。

2023-11-20 18:56:01 42 1

空空如也

空空如也

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

TA关注的人

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