- 博客(36)
- 收藏
- 关注
原创 Numpy数组与np.newaxis
Numpy数组的形状(a, b, c)由外向内逐层定义,含义:a个外层元素,每个外层元素有b个中层元素,每个中层元素有c个内层元素。a、b、c可分别理解为层、行、列。例:三维数组[ [ [1, 2] , [ 2, 3] ] ]形状为(1,2,2);[ [ [ 1, 2] ] , [ [ 2, 3] ] ]形状为(2,1,2)np.newaxis本质上是个占位符,用来在指定位置添加一个维度。输出 (3, 1, 2)输出 (3, 2, 1)
2025-03-27 06:28:46
111
原创 numpy数组广播机制
NumPy数组的广播机制是一种自动扩展数组形状的机制,使得不同形状的数组能够进行元素级别的运算,而无需显式地复制数据。它通过特定的规则调整数组的维度,使得它们的形状相容,从而实现高效的运算
2025-03-27 02:22:17
279
原创 循环旋转判断
请设计一个线性时间的算法,判断字符串 S 是否是另一个字符串 S’ 的循环旋转。例如, arc 和 car 是彼此的循环旋转。,如“arc”+“arc” = “arcarc”,如果S是拼接字符串的子串,那么S就是S’的循环旋转。
2025-03-25 14:23:50
113
原创 寻找左边第一个更小值
从左往右将序列中的数与栈顶元素比较,如果小于栈顶元素,则弹栈并继续比较,直到栈顶元素大于等于当前的数或栈空。如果当前数小于栈顶元素那么栈顶元素就是当前数左边第一个更小的数(因为栈具有先进先出的性质);(2)寻找序列左侧第一个更大值(单调递增栈):方法与上面类似,一直寻找大于序列数的栈元素,小于的出栈。给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。单调栈即从栈顶至栈底单调递增或者单调递减的栈。(1)寻找序列左侧第一个更小值(单调递减栈):方法如上。
2025-03-22 15:26:29
307
原创 链表的环的入口问题
1、慢指针S每次移动一步,快指针F每次移动两步,两个指针同时出发,必然在C点相遇,首次相遇时,快指针回到原点A并且速度变为每次移动一步,接着两个指针继续移动,再次相遇的位置为环的入口B。那么当快指针回到原点并以速度1出发,它从A到B的时间和慢指针从C到B的时间是相同的,因此二者再次相遇时即为环的入口。3、为什么相遇后快指针回到原点速度变为1再次出发二者相遇时刚好到达环的入口?快指针超越慢指针有两种情况:(1)超越一步(2)超越两步。(2)如果超越两步,那么上一步超越一步,上上步便会相遇。
2025-03-17 12:07:00
208
2
原创 【C语言易错】for语句易错
原因:开始时 i = 0,判断条件为真,打印0,接着i ++ 变成1,此时不满足判断条件 “i!= 1”,于是不打印1。然后,很容易认为 i 继续自增并打印2 3,这是不对的,因为判断条件一旦为假,循环就结束了,而不是执行变量调整部分继续判断.......这是一个易忽略的点!错误结果:0 2 3。
2023-11-18 13:59:18
306
原创 【C语言疑难杂症】调试查看内存窗口时全是问号
进入调试模式时,我们位于程序的起始位置,而此时程序没有进行任何操作,没有创建变量i 、 没有给变量i分配地址.......,也就是此时编译器在此时根本不知道变量i的存储在,也就谈不上查看i的值了。按F11,再往后走几步,直至程序创建了变量 i ,那么也就完成了赋值、分配内存的操作。然后就可以在内存窗口中查看i的值了。我们创建了一个变量i并赋值,此时进入调试模式并用内存窗口查看变量i中的值时,却发现全是问号。编译器:VS2022。
2023-10-25 12:06:41
1318
1
原创 【c语言易错】if语句常犯错误
编译器在执行上述代码时,执行顺序是先判断“a==b”并返回一个值作为表达式“a==b”的结果,然后判断“a==b==c”,然后此时表达式“a==b”已经被返回值1(假设前面的判断结果为真)替代,也就是说,此时的“a==b==c”变成了“1==c”,这表示判断c的值是否等于1,显然与最初的目的不符。原因同第三点一样,应当改为b>=a && b<=c。判断相等时应该使用“==”,"="是赋值运算符。正确的代码应该是:a==b && b==c。
2023-10-20 13:30:17
867
原创 【C语言易错】设定数组大小时不能使用变量名
使用数组时,在某些特殊情况下,我们需要去更改数组的大小,但是当数组的使用次数很多时,更改起来就较为麻烦,于是想到用变量来代替数字去设定数组的大小。但是并不能这么做,这是一种语法错误。解决方法:定义一个宏代替变量。可以看到,此时编译器不再报错。
2023-10-18 18:16:38
774
原创 【C语言疑难杂症】char 为何能表示 -128
不难发现,时针顺时针走一步,等价于逆时针走11步,我们将 -11 称为 1 的“补数”,同理,-10 是 2 的“补数”......我们还能发现,互为“补数”的两个数的绝对值之和是这个计量系统的模。如果将顺时针走的步数用正数来表示,将逆时针走的步数用负数来表示,那么我们就能发现,时钟这个计量系统能够表示的数值范围由 -11 ~ 11 变成了 -12 ~ 11!的规律,于是,将逆时针走0步替换为逆时针走12步,也就是将-12作为0的“补数”,这样就恰好满足规律了。“原数”+“补数” = “模”
2023-10-18 11:16:52
1053
原创 【C语言错题笔记】
易知代码是将-1、-2、-3、... 、-1000逐个装入数组arr中,但是应当注意数组的类型是char(字符数组),而char的数值存储范围是-128~127,因此-128以后的数字装入数组中时会发生某些改变。同理,接下来是126、125 、 124 ...... 、1 、0 、-1、-2 、-3........,根据ASCLL表可知,ASCLL码值0对应的字符是 ‘\0’,当函数strlen读取到0时就会停止,1~128~0 总共255个数(0不计在内),因此最终的输出结果是255。
2023-10-16 14:04:24
58
原创 【C语言错题笔记】
i是一个无符号数,所以只能表示非负数,永远也不可能小于0,进而陷入打印的死循环。至于为什么后边打印非常的的数是因为0 - 1回向前借位,然后二进制变成11111111 11111111 11111111 11111111,即4294967295。结果:打印完9 8 7 6 5 4 3 2 1 0 后死循环。
2023-10-16 10:55:22
95
原创 【C语言易错】不能用 ^ 计算次方??
在C语言中,^ 是一个位操作符——按位抑或,而非次方。格式:pow(操作数 , 次方 )1的2次方等于3,显然错了!
2023-10-15 19:08:49
1047
原创 【C语言疑难杂症】“无法启动程序......系统找不到指定的文件”
还有一种原因,就是新建源文件时,新建项的后缀写的是.cpp,这样这个文件可能不会自动存放到项目所在的目录,造成上述问题。这种情况我们只需要删除原来的源文件,然后新建一个并且将后缀改成 .c 即可。项目——>项目属性——>属性配置——>链接器——>常规——>输出文件——>编辑。项目——>项目属性——>配置属性——>常规——>输出目录——>编辑。创建的项目和源文件的路径不同(两者在不同的地方)查看两者的目录,然后把源文件移动到项目目录。
2023-10-08 15:03:30
15847
8
原创 浅析原码反码补码
进制表示法中,一个数的每一位都有着不同的权重,例如十进制中每一位的权重都是10的次幂,对应图中的10º、10¹、10²,我们将每一位上的数字乘以这个位置对应的权重,然后全部相加,就能得到这个数对应进制的表示形式。与十进制相同,二进制每一位的权重就是2的次幂,用每一位上的数字乘以对应权重然后全部相加就能得到这个数的二进制表达形式了。
2023-10-06 04:17:33
405
1
原创 【C语言错题笔记】
2、-128存入a中发生截断,变为10000000。打印时,发生整形提升,由于char是有符号型,补充原符号位,变成111111111111111111111111100000000(补码),由于打印类型是%u,此时编译器认为这是一个无符号数,那么补码反码原码相同,直接输出,转化为十进制为4294967168。3、补位时,看原来的类型(有符号char),不要被%u影响以为补充0。%u在最终的打印阶段发挥作用。1、%u意思是打印十进制无符号整数。
2023-10-04 17:53:15
120
1
原创 【C语言疑难杂症】b = a++;根据运算符优先级,不应该先自增然后赋值给b吗??
对于表达式 b = a++,根据运算符的优先级,的确先执行自增运算符++,但它是后置的++,也就是作用时先让表达式 a++ 产生一个结果,然后变量a再自增。综上,++的执行次序在=之前,但是赋值时采用的是表达式a++的返回值,而a++的返回值是a的旧值还是自增后的值取决于++是后置的还是前置的。然后再执行赋值运算符,将表达式a++的返回值(a的旧值,刚刚产生的结果)赋给变量b。答:先执行++不等于先自增!
2023-10-04 17:31:00
615
1
原创 【C语言妙操作】利用 ^ 和 & 求一个数二进制位中1的个数
根据按位与的规则我们知道,对应位存在0则结果为0,均为1结果才为1。由于1除了最后一位均为0,那么它按位与一个数时,可以让这个数除了最后一位都变成0。再看最后一位,如果为1,那么结果为1,为0则结果为0。利用这个特性,我们可以将作用后的结果的最后一位数剥离,如果是0那么它的前身是1,如果是1,那么它的前身是0。如果最终结果为1,那么作用数的最后一位为1,结果为0那么作用数的最后一位为0。2、 1按位与一个数,可以让这个数二进制位最后一位不变,其他位均变成0。
2023-10-04 10:03:22
83
1
原创 【C语言】指针大小与指针类型无关?
电脑操作系统分为32位和64位,其中32位操作系统有32根地址线,因此它的地址是一个由32个二进制位组成的数字,最多有2^32中情况,也就是32位操作系统最多有2^32个内存地址;同理,64位操作系统最多有2^64个内存地址,可以访问的内存更大,运行速率也就随之更快。电脑中的内存被划分为许多个小的内存单元,每个单元都有一个二进制编号,这个编号就是这个内存单元的地址,也就是指针。32位操作系统的内存地址编号有32个二进制位(比特位),因此32位操作系统的指针大小为4个(32/8)字节;
2023-09-29 10:32:30
211
原创 【C语言易错】直接用一个数组对另一个数组进行赋值
数组名的本质是首元素的地址,地址,地址!也就是说arr1和arr2是两个数字,因此图中的“装填操作”大错特错。图中的操作试图将数组arr2中的内容直接装填进数组arr1,这么做是错误的。利用循环语句对两个数组中的元素进行一一调换。
2023-09-27 13:51:57
970
1
原创 【C语言妙操作】循环里的迭代
使用场景:循环计算并将结果迭代至一个变量中。+= :先和对象相加,再将结果赋值给自己。例:计算1+2+3+...+10。让这个变量既参加运算又接受结果。运用符合操作符可以简化这一过程。
2023-08-23 22:30:58
136
原创 【C语言妙操作】利用 % 和 / 对多位数(整数)实现位数分离
1234%10的意思是对10取模,即取1234除以10得到的余数。1234/10的意思是取1234除以10的商。2、利用 / 得到十位及以上的位数。
2023-08-23 21:59:31
1872
原创 【C语言疑难杂症】sizeof与函数strlen的区别
sizeof计算字符个数的方法是先计算出整个字符串的字节大小,然后除以单个字符的字节大小得到字符个数。此时结束标志字符 '\n' 也会计算在内,因此用最终结果减去一才是字符串中的字符个数。strlen从字符串中的第一个字符开始读取,遇见字符串结束标志 ’\n’ 时,停止读取(结束标志‘\n’不会读取)1.类型:sizeof是操作符;strlen是库函数,需要引入头文件。2.功能:sizeof用于计算对象所占内存字节数;strlen用于计算字符串中的字符个数。
2023-08-17 12:08:42
79
1
原创 【C语言疑难杂症】if和else if后的判断条件同时成立
原因:if与if else是一个非此即彼的关系,它们不能同时执行。结果:程序执行位置靠前的if后的语句项。
2023-08-17 11:21:44
2836
1
原创 【C语言疑难杂症】a++与a+1
a++表示自增,即变量a的值增加1;而a+1是个计算式,其返回值需要一个变量来接收,如b=a+1表示对变量b赋值,其值是在变量a的值的基础上增加1。本质区别:a++有返回值,而a+1没有返回值。
2023-08-17 11:07:06
1519
1
原创 【C语言疑难杂症】vs2022使用库函数时被警告或提示错误
但是第二个函数在形式上显然要更复杂,使用它会影响我们敲代码的速度,于是我们选择第二种方法,但是每次都在程序开头打那么长一串字符太费劲,有没有什么方法让程序自动生成这句话呢?我们每次创建一个源文件时,这个源文件都拷贝自一个叫newc++file.cpp 的文件,该文件初始时为空,只要我们在这个文件中加入那串字符,那么程序就会自动生成了!3.我们可以将该文件拷贝到桌面或其他路径,得到备份的修改权限,然后再将备份放回原来的路径(在文件VCprojectItenms中)并覆盖掉原来的文件即可。
2023-08-17 10:18:35
706
1
原创 【C语言疑难杂症】定义数组没有声明大小引起的错误
那么编辑器就会把首次定义数组时数组里存放的元素个数默认为该数组所能存放元素个数的最大值。图示数组arr并未声明大小,
2023-07-31 21:28:19
491
1
原创 【C语言疑难杂症】break的使用困惑
(2)在嵌套循环语句中,break只影响内部循环而不作用于外部循环。(1)break不作用于if语句中。
2023-07-30 10:13:18
404
1
空空如也
关于#c语言#的问题:运算符++的优先级高于运算符=,那为啥b先赋值给a再自增
2023-10-02
C语言表达式求值顺序
2023-09-06
C语言在自定义函数中访问二维数组冲突
2023-08-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人