自定义博客皮肤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)
  • 收藏
  • 关注

原创 数学中的文化自信

两鱼紧紧相扣,表示阴阳互相依存,两鱼首尾相衔,表示阴阳互为转化,两鱼眼,表示阴中有阳,阳中有阴,好比一个人,即使一个好人,也会有坏的一面,即使一个坏人,也会有好的一面,世界上没有绝对的好人,也没有绝对的坏人,所以,阴阳也总是相辅相依。因此太极生两仪,说的是从无到有的过程,是说任何事物从一开始便产生了两个面,例如,好与坏,黑夜与白天,长与短,热与冷,等等,凡是能举出的事物必然有两个面。孔子的《易经·系辞》上传的第十一章中有言“是故,易有太极,是生两仪,两仪生四象,四象生八卦,八卦定吉凶,吉凶生大业。

2024-02-27 20:35:11 202

原创 数学的维度智慧

比如在生活中,你描述一块蛋糕的长宽高,实际上描述的是它的三个维度,而这三个维度相互独立,互不相关,我们也可以再给它加入新的维度,比如今天的蛋糕,这就是时空,四个维度了,那我们就接着再加入比如它的甜度,脂肪度,这就变成了六个维度了。通过这个理解,实际上所谓的高维,似乎也不再玄乎其玄,高高在上了。实际上,维度的数目取决于我们所认知的角度,我们每个人都有自己的维度,当别人初次认识你,可能只是停留在你的名字上,这个时候,你就是一个一维的人,但随着你们的相处,他对你的认知在慢慢深化,他认识到你的开朗,勤劳。

2024-02-26 20:22:46 329

原创 文件的基础知识与读写

磁盘上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)A.程序文件程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。B.数据文件⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或者输出内容的⽂件3.文件名⼀个⽂件要有⼀个唯⼀的⽂件标识,以便⽤⼾识别和引⽤。

2023-12-28 20:13:25 1045

原创 结构体的对齐规则

如果我们能保证将所有的double类型的数据的地址都对⻬成8的倍数,那么就可以⽤⼀个内存操作来读或者写值了。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构 体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的 整数倍。2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。

2023-12-25 23:00:03 483

原创 数组和指针常见笔试and期末题(超详细)

希望大家好好研究,不管期末还是笔试还是林林总总的比赛啥的,都是易考点哦。

2023-12-24 23:21:01 683 2

原创 c语言易错题之数据类型变换

【代码】c语言易错题之数据类型变换。

2023-12-22 20:06:41 400

原创 一道十分容易错的笔试题

实际上,我们通过前面的学习可以知道sizeof返回的类型是unsigned int,但我们却因为学艺不精,没有了解到实际上sizeof实际上会将括号内的东西进行一个整型提升,这是什么意思呢,实际上,这就是在说,如果你括号内为一个有符号整型,我会强制性改变你的符号位,将你强制变成无符号整型。-1的二进制为1111 1111,整型提升后为0111 1111,改变了符号位数字,所以我们可以很容易知道,实际上i已经不再是-1了,它是一个非常大的数,它也比所谓的4还要大。大家可以通过调试,运行,自己验证一遍呢!

2023-12-21 19:52:50 487 2

原创 sizeof和strlen的对比

注意strlen函数返回的类型并不只是单纯的整型,它和sizeof函数一样,实际上他们返回的类型为无符号整型,实际上也就是说size_t类型实际上就是unsigned int类型,这里是我们需要注意的,而在vs编译器中,无符号整型对应的占位符,并不是%d,它实际上是%zd,所以这也是为什么当我们写%d会在有时候报错的原因,这也是我们要注意的一个点,下面我们就都换成%zd。我们在对他们进行运行后,我们会发现实际上运行的结果是不同的,甚至第一条语句运行出来的是随机值,而第二条是3,第三条是3,第四条是4。

2023-12-21 19:32:08 386 2

原创 qsort函数应用

qsort函数一共设计四个参数,第一个参数是数组的地址,因为它要比较不同数据类型,所以它要有一个比较的入口,第二个参数是数组中元素的个数,第三个参数是数组的元素大小,第四个参数是最难的一个参数,他是一个函数指针,因为我们在这里需要提供一个函数,一个可以提供比较方法的函数。我们前面学习了一些常见的排序方法,比如冒泡排序等,但它仅局限于整型的排序,今天我们要介绍一个牛气哄哄的库函数qsort函数,这个函数可就厉害了,能排序任意类型数据,掌握后可谓受益终身,接下来让我们一起来学习这个牛牛的库函数吧。

2023-12-19 21:55:40 437 1

原创 指针类型汇总笔记

2023-12-16 22:59:05 666 1

原创 回调函数详解

如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。在我们写的计算机的实现的代码中,有些代码是重复出现的,其中虽然执⾏计算的逻辑是区别的,但是输⼊输出操作是冗余的,有没有办法,简化⼀些呢?我们发现在每一个case的后面都有着一堆相似重复的代码,这些代码会增加计算机的负担,对此,我们可以通过回调函数来对代码进行优化。

2023-12-16 22:48:31 352 1

原创 函数指针变量

根据前⾯学习整型指针,数组指针的时候,我们的类⽐关系,我们不难得出结论: 函数指针变量应该是⽤来存放函数地址的,未来通过地址能够调⽤函数的。那么函数是否有地址呢?如果我们要将函数的地址存放起来,就得创建函数指针变量咯,函数指针变量的写法其实和数组指针⾮常类似。确实打印出来了地址,所以函数是有地址的,函数名就是函数的地址,当然也可以通过。通过函数指针调⽤指针指向的函数。函数名 的⽅式获得函数的地址。什么是函数指针变量呢?

2023-12-09 23:52:13 430 2

原创 c语言上机小练(有点难)

要求:main函数存储字符串和提取得到的一组整型数,process函数负责完成提取字符串中的连续数字字符后转换为十进制整数并存入对应数组元素中,同时返回转换得到的整数个数,如果输入空串,process函数返回-1,如果非空串,但无连续数字字符,则返回0。将其中连续的数字作为一个十进制整数,依次存放到一个数组a中。这道题真的是对我来说很难,是我第一次敲了两个小时的代码了,第一个小时是完成整数寻找的设计,第二个小时是对函数进行防御机制的设计,中间代码出错,一行一行调试了很久,发现调试太好用了,哭死。

2023-12-06 22:02:37 4123 3

原创 字符指针变量

实际上这里并不是将整个字符串都放入指针,而是将它的首个字符放入了指针当中,所以当我们执行的时候得到的是h,我们还可以用*pstr[1]这个时候打印的便是e,以此类推。当然我们也可以直接*“hello bit”[1],打印的结果最终也是e,因为它们本质都是一样的。但是和数组不同的是,数组是可以通过指针来修改数组中的元素的,但字符串实际上只是常量,它是不能通过指针修改的,也不能修改。实际上字符串我们可以认为是一个存放字符的数组,它实际上的使用方法也和数组类似。

2023-12-06 21:44:39 445

原创 冒泡排序详解

但是这里我们不难推出,实际上即便你的数字按照顺序排好,再调用上述函数时也要执行很多遍,但这也增加了程序的工作量,在这里我们可以进行一个优化,就是可以判断数组是否需要进行排序,或者在排序的过程中,省略一些步骤。冒泡排序顾名思义,即像小鱼吐泡泡一样,泡泡慢慢飘上来,一个接着一个,冒泡排序便是通过比较相邻两个数的大小,轮完一遍后,会将最大的数放到前面,然后接着再轮上第二遍,把第二大的放到相应位置,以此类推。

2023-12-02 22:25:11 886 3

原创 一维数组传参的本质

我们知道在x86的环境下,栈区空间都是先使用高地址,再使用低地址的。这个代码搞明⽩后,我们再试⼀下,如果我们再分析⼀下,数组名arr是数组⾸元素的地址,可以赋值给p,其实数组名arr和p在这⾥是等价的。⾸先让我们从⼀个问题开始,我们之前都是在函数外部计算数组的元素个数,那我们可以把函数传给⼀个函 数后,函数内部求数组的元素个数吗?数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移量求出元素的地址,然后解引⽤来访问的。的时候,传递的是数组名,也就是说本质上数组传参本质上传递的是数组⾸元素的地址。

2023-11-30 19:43:07 476 1

原创 二分查找(折半查找)探究学习

⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4...这样猜吗?⼀般你都会猜中间数字,⽐如:150,然后看⼤了还是小了,这就是⼆分查找,也叫折半查找。但是这种查找方法有一定的局限性,因为如果当它数字很大的时候,我们便需要一个一个校对,对计算机的工作量比较大。c.根据左右下标确定中间元素和要找的元素进行比较。{找不到,依据大小关系,确定新的查找范围}d.根据左右下标确定中间元素的下标。b.确定被查找范围的左右下标。

2023-11-29 20:51:35 1125 13

原创 函数递归所应满足的条件

实际上我们在使用函数的时候,都会在栈空间分配一块内存,而如果这个函数没有进行完,那么这块空间就不会得到释放,而这个函数又永远不会跳出递归,所以便不断地在内存占据空间,这种死递归没有限制,会无限循环下去,而栈内存的空间是有限的,最终便出现栈溢出的报警。那我们就可以写出函数Fact求n的阶乘,假设Fact(n)就是求n的阶乘,那么Fact(n-1)就是求n-1的阶。这样的思路就是把⼀个较⼤的问题,转换为⼀个与原问题相似,但规模较⼩的问题来求解的。的时候,n的阶乘是1,其余n的阶乘都是可以通过上述公式计算。

2023-11-28 22:17:44 830 4

原创 数组名的理解

sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩,单位是字节。&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且是数组⾸元素的地址,我们来做个测试。我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址。输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。

2023-11-25 22:22:34 650

原创 指针的使用和传址调用

Swap1函数在使⽤的时候,是把变量本⾝直接传递给了函数,这种调⽤函数的⽅式我们之前在函数的时候就知道了,这种叫传值调⽤。我们现在要解决的就是当调⽤Swap函数的时候,Swap函数内部操作的就是main函数中的a和b,直接将a和b的值交换了。那么就可以使⽤指针了,在main函数中将a和b的地址传递给Swap函数,Swap函数⾥边通过地址间接的操作main函数中的a和b,并达到交换的效果就好了。传址调⽤,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量;所以Swap是失败的了。

2023-11-25 22:17:45 791 1

原创 assert断言

有⼏个好处:它不仅能⾃动标识⽂件和出问题的⾏号,还有⼀种⽆需更改代码就能开启或关闭 assert()如果已经确认程序没有问题,不需要再做断⾔,就在 #include <assert.h>,⽤于在运⾏时确保程序符合指定条件,如果不符合,就报错终⽌运⾏。中写⼊⼀条错误信息,显⽰没有通过的表达式,以及包含这个表达式的⽂件名和⾏号。,程序继续运⾏,否则就会终⽌运⾏,并且给出报错信息提⽰。的缺点是,因为引了额外的检查,增加了程序的运⾏时间。然后,重新编译程序,编译器就会禁⽤⽂件中所有的。语句的前⾯,定义⼀个宏。

2023-11-25 22:12:16 477

原创 野指针详解

概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。

2023-11-24 20:39:52 469

原创 指针运算详解

因为数组在内存中是连续存放的,只要知道第⼀个元素的地址,顺藤摸⽠就能找到后⾯的所有元素。

2023-11-24 20:26:49 602

原创 关键字const的修饰(指针)

就是为了不能被修改,但const只是限制了n,没有限制*p,所以如果p拿到n的地址就能修改n,这样就打破了const的限制,这是不合理的,所以应该让p拿到n的地址也不能修改n,那接下来怎么做呢?上述代码中n是不能被修改的,其实n本质是变量,只不过被const修饰后,在语法上加了限制,只要我们在代码中对n就⾏修改,就不符合语法规则,就报错,致使没法直接修改n。const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指。这就是const的作⽤。向的内容,可以通过指针改变。

2023-11-23 20:03:19 505

原创 指针变量与指针类型的深入理解

相关代码展示int main()*pi = 0;return 0;return 0;return 0;

2023-11-23 18:25:13 145

原创 static和extern关键字详解

但是全局变量被 static。结论:static修饰局部变量改变了变量的⽣命周期,⽣命周期改变的本质是改变了变量的存储类型,本来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。代码2中,我们从输出结果来看,i的值有累加的效果,其实 test函数中的i创建好后,出函数的时候是不会销毁的,重新进⼊函数也就不会重新创建变量,直接上次累积的数值继续计算。修饰之后,外部链接属性就变成了内部链接属性,只能在⾃⼰所在的源⽂件内部使⽤了,其他源⽂件,即使声明了,也是⽆法正常使⽤的。

2023-11-22 20:29:23 834

原创 如何隐藏自己的代码(很酷)

这里我们可以实现把关键的函数实现与主函数分开,放在不同文件中,不仅方便团队的协作,而且可以使代码更加有条理,但是我们要注意,如果是使用自己的创造的头文件的话,应该用双引号,同时头文件里面放的都是函数的声明,函数的具体实现是在源文件中的。幻想当我们成为一名优秀的程序员,有着各大公司想要买我们的代码,但我们并不想要让他们知道我们代码的实现,毕竟一复制便可以解决,这里我们希望有一种方法可以把我们的核心代码给隐藏掉,那我们又应该怎么去实现呢?接下来让我们一起来看看吧。这是自己的代码,将重要代码放在这个文件中。

2023-11-22 16:09:17 2038 1

原创 c语言上机作业:给函数增加防御机制

那么问题又来了,如果z可以取负数,那么这样的话不就与之冲突了么,而且如果函数很复杂,我也不知道能不能取到呀。这里我们就要认识形参与实参的关系了,形参是不能改变实参,但我们可以通过地址找到他,从而来更改,但目前地址还没学,我们可以使用一下引用,这个引用不等于形参,因为它是本来就是实参,只不过换了个名字而已,这样的话,我们就可以通过直接更改所引用的参数的值,然后至于函数可否运行,能不能实现,我们则用状态来判断,如-1和其他的数,接下来,我们具体看一下代码。z = log(x);else。

2023-11-21 23:13:31 224

原创 c语言上机作业:迭代法求平方根

2.同时我们这里使用double类型是为了避免出现栈溢出,数据溢出的情况,break可以当误差足够小时实现循环的终止。b.同时,依据函数的防御原理,我们需要综合考虑一下用户在输入时可能会出现负数的情况,同时当输入数据等于0的时候会出现的分母为0的情况。a.这里要求我们设置一个函数能够完成牛顿迭代法,这里需要使用到函数迭代的知识,即函数里面用应用到函数。1.这里用fabs()这个绝对值函数时需要库函数的申明,即#include<math.h>设计一个函数func用迭代法编程求一个数的平方根。

2023-11-21 22:31:43 347

原创 指针变量和地址

前⾯的内容我们了解到,32位机器假设有32根地址总线,每根地址线出来的电信号转换成数字信号后是1或者0,那我们把32根地址线产⽣的2进制序列当做⼀个地址,那么⼀个地址就是32个bit位,需要4个字节才能存储。那我们通过取地址操作符(&)拿到的地址是⼀个数值,⽐如:0x006FFD70,这个数值有时候也是需要 存储起来,⽅便后期再使⽤的,那我们把这样的地址值存放在哪⾥呢?同理64位机器,假设有64根地址线,⼀个地址就是64个⼆进制位组成的⼆进制序列,存储起来就需要8个字节的空间,指针变的⼤⼩就是8个字节。

2023-11-20 21:18:12 234

原创 操作符详解

由于10为正整数,故补码为其本身:0000000000000000000000000001010。将原码转化为补码后,将两个补码对比看,如果均为1则为1,一个为0一个为1或均为0则该位为0。将原码转化为补码后,将两个补码对比看,如果均为0则为0,一个为0一个为1或均为0则该位为1。将原码转化为补码后,将两个补码对比看,如果该位不同则该位为1,如果该位相同则为0。2. 算术右移:左边⽤原该值的符号位填充,右边丢弃(大多数软件都是这种操作)。警告⚠️:对于移位运算符,不要移动负数位,这个是标准未定义的。

2023-11-17 22:47:09 387 1

原创 操作符前提:各种进制与各种码(计算机基础)

8进制的数字每⼀位是0~7的,0~7的数字,各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的⼆进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀个8进制位,剩余不够3个2进制位的直接换算。其实10进制的每⼀位是权重的,10进制的数字从右向左是个位、⼗位、百位....,分别每⼀位的权重是 1 , 10 , 100 ...有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号 位,剩余的都是数值位。

2023-11-16 21:36:37 149 1

原创 深⼊理解指针(1)

我们可以简单理解,32位机器有32根地址总线, 每根线只有两态,表⽰0,1【电脉冲有⽆】,那么 ⼀根线,就能表⽰2种含义,2根线就能表⽰4种含义,依次类推。我们知道计算上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存空间如何⾼效的管理呢?每个内存单元也都有⼀个编号(这个编号就相当于宿舍房间的⻔牌号),有了这个内存单元的编号,CPU就可以快速找到⼀个内存空间。的每⼀个位置,这是为何?

2023-11-15 21:19:22 156 1

原创 函数栈帧的创建和销毁

我们在写C语言代码的时候,经常会把一个独立的功能抽象为函数,而函数的创建与实现,是需要在栈区中获取一处空间的,所以C程序是以函数为基本单位的。那函数是如何调用的?函数的返回值又是如何待会的?函数参数是如何传递的?这些问题都和函数栈帧有关系。所以我们只要理解了函数栈帧的创建和销毁,以下问题就能够很好地理解了:1.局部变量是如何创建的?2.为什么局部变量不初始化内容是随机的?3.函数调用时参数时如何传递的?传参的顺序是怎样的?4.函数的形参和实参分别是怎样实例化的?

2023-11-14 23:16:27 122

原创 函数的声明和定义

⼀般在企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;⼀般情况下,函数的声明、类型的声明放在头⽂件(.h)中,函数的实现是放在源⽂件(.c)⽂件中。这是因为C语⾔编译器对源代码进⾏编译的时候,从第⼀⾏往下扫描的,当遇到第7⾏的is_leap_year 函数调⽤的时候,并没有发现前⾯有is_leap_year的定义,就报出了上述的警告。就是函数调⽤之前先声明⼀下is_leap_year这个函数,声明函数只要交代清 楚:函数名,函数的返回类型和函数的参数。函数要先声明后使⽤;

2023-11-14 18:55:33 105

原创 VS常用的调试技巧

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

2023-11-13 20:32:29 985

原创 数组小练习

多个字符从两端移动,向中间汇聚。

2023-11-12 22:37:39 28

原创 函数的参数及返回值

这⾥的set_arr函数要能够对数组内容进⾏设置,就得把数组作为参数传递给函数,同时函数内部在设 置数组每个元素的时候,也得遍历数组,需要知道数组的元素个数。我们在调试的可以观察到,x和y确实得到了a和b的值,但是x和y的地址和a和b的地址是不⼀样的,所以我们可以理解为形参是实参的⼀份临时拷⻉。⽐如:写⼀个函数对将⼀个整型数组的内容,全部置为-1,再写⼀个函数打印数组的内容。,称为形式参数,简 称形参?虽然我们提到了实参是传递给形参的,他们之间是有联系的,但是形参和实参各⾃是独⽴的内存空。

2023-11-09 23:15:51 286 1

原创 函数的引入

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

2023-11-08 23:59:49 220 1

原创 二维数组的学习

当我们掌握了⼆维数组的创建和初始化,那我们怎么使⽤⼆维数组呢?其实⼆维数组访问也是使⽤下标的形式的,⼆维数组是有⾏和列的,只要锁定了⾏和列就能唯⼀锁定 数组中的⼀个元素。以上⼀段代码中的arr数组为 例,⾏的选择范围是0~2,列的取值范围是0~4,所以我们可以借助循环实现⽣成所有的下标。,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组。⽐如,我们说:第2⾏,第4列,(

2023-11-06 20:15:19 277

空空如也

空空如也

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

TA关注的人

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