- 博客(79)
- 收藏
- 关注
原创 Python可迭代对象&迭代器对象
两个特性__iter__()和__next__()return self #返回的是当前迭代器类的实例对象raise StopIteration("终止迭代,数据已被读取完")mi = MyIteration() #类中有__iter__()和__next__()方法,创建的对象就是迭代器对象print(mi)
2025-02-27 14:38:29
476
原创 python面向对象
基本格式:class 类名:代码块注意:类名要符合标识符规定,同时遵循大驼峰命名法,见名知意。查看类属性:类名.属性名新增类属性:类名.属性名 = 值height = 800 #类属性。
2025-02-25 21:19:45
573
原创 python异常&模块&包
自定义模块是自己在项目中定义的一些模块。在创建自定义模块时,应确保命名遵循python的标识符规定和变量的命名规范,并且要避免与python的内置模块以及已安装的第三方模块命名放生冲突,以防止模块功能出现异常或者无法使用。
2025-02-24 16:47:02
815
原创 python函数进阶
局部变量只能在被定义的函数中使用,在函数外部不能使用。作用:在函数体内临时保存数据,即当函数调用完成后,就销毁局部变量a = 100 #全局变量print(a)a = 120 #局部变量print(a)全局变量和局部变量命名相同,全局变量不会被局部变量覆盖。在函数内部修改全局的变量,可以使用global关键字。
2025-02-23 16:10:10
982
原创 python函数基础
含义:在一个函数里定义另外一个函数print("在学习")course()study() #在学习 python注意:注意缩进。定义和调用是同级的。调用如果在定义里面则永远也定义不到内层函数不能调用外层函数(否则会陷入死循环,知道超过递归的最大深度)
2025-02-23 13:36:08
266
原创 python类型转换&深浅拷贝
只能转换由纯数字组成的字符串float->int浮点型强转整形会去掉小数点后面的数,只保留整数部分str->int 如果字符串中有数字和正负号(在开头)以外的字符就会报错(+/-写在前面表示正负号,写在后面是加减号)从控制台输入数字的时候可以使用强制转换,input输入时默认输入的是字符串类型。
2025-02-23 12:10:17
541
原创 python元组&字典&集合
元组名 = (1,2,3)注意:定义元组时,如果只有一个元素,末尾要加逗号,否则返回唯一的这个值的数据类型,多个元素用,隔开,不同元素也可以是不同的数据类型。
2025-02-22 17:58:24
746
原创 python字符串&列表
编码制定时间作用所占字节数ASCII1967表示英语及西欧语言GB23121980国家简体中文字符集,兼容ASCII2bytesUnicode1991国际标准组织统一标准字符集2bytesGBK1995GB2312的扩展字符集,支持繁体字,兼容GB23122bytesUTF-81992不定长编码1-3bytes。
2025-02-22 14:52:13
621
原创 python基础知识
print("字符串",end="后面拼接的值") 输出结果为:第一个print中的字符串+后面拼接的值+第二个print中的字符串。加上引号会打印引号里面的的内容,没有引号就会被识别成变量名,打印的就是变量的值,如果变量没有被赋值就会报命名错误。再次使用变量不再划分空间,修改原空间的值。print("哈哈哈""呵呵呵""嘿嘿嘿")没有逗号输出的是一句话。print("哈哈哈","呵呵呵","嘿嘿嘿")有逗号中间有空格。print("哈哈哈","呵呵呵","嘿嘿嘿",sep=',')
2025-02-21 19:32:29
611
原创 程序环境和预处理
_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义( 对于这个gcc编译器为1,VS编译器未定义)常用编译器:gcc clang(苹果维护的)这些预定义符号都是语言内置的。
2024-12-27 14:18:04
1113
原创 C语言文件操作
需要注意一下:用fread读,需要给一个需要读的个数,所以就是当我们文件里放的数据个数小于需要读的数据个数,文件结束是错误结束的,是因为读取到文件末尾了,还没了读够数据,就是用feof来判断。当读取的个数,就是fread的返回值和我们传入的需要读的数是相等的我们是读取成功的。我们前面写的通讯录程序,当程序运行的时候,可以给通讯录中增加、删除数据,此时数据存放在内存中,当程序退出的时候,通讯录中的数据就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。
2024-12-26 14:44:57
1007
原创 输入输出函数gets、puts和getchar、putchar和 scanf、 printf
用printf输出时,我们往往需要格式化输出(但是printf本来接受的就是一个地址,我们也可以不按照%s的方式输出,直接传入地址)当我们需要输入空格时,就需要用gets()函数,在调用gets()函数输入时,遇到空格会将空格输入,遇到回车输入结束。putchar()函数就是一次输出一个字符,接受的参数时整形(或者说字符类型,字符类型是以ASCII码值的形式存储的)输出字符串的时候,我们也可以直接用puts,简化输出的格式。不管用printf还是puts,接受的都时指向字符的指针。
2024-12-26 13:56:33
508
原创 C语言动态内存管理
p是GetMemory 函数中的一个临时变量,当调用完这个函数会把p还给内存空间,在Test调用GetMemory函数的时候得到的是存放p的那块地址,但是返回的时候那个地址指向的内容已经不确定了。将str传入GetMemory函数中p是创建的一个临时变量,出了 GetMemory函数的范围,p销毁,开辟的空间没有释放,造成内存泄露,并且不会将这块空间的地址带给str,str还是一个空指针,在使用strcpy的时候需要解引用,空指针解引用的时候程序崩溃,所以不会打印。这个时候我们就需要动态内存的开辟了。
2024-12-25 12:32:34
864
原创 自定义类型:结构体、枚举、联合
一个字节占8个比特位,要存储char a的时候需要开辟一个字节的内存单元,在这个内存单元还能放下char b,这个时候已经占了7个比特位了,若要存放char c需要再开辟一个字节的内存单元,但是这个char c会不会使用上次开辟的一个字节剩下的一个比特位呢?然后c2占一个内存单元,就是偏移量为1的位置,i占四个内存单元,应该从偏移量为4的位置开始分配4个内存单元,到偏移量为7的位置,这个时候结构体已攻占了8个内存单元,刚好是最大对齐数4的整数倍。在内部引用的时候,还没有定义这个新的名字得有类型才能重命名。
2024-12-23 20:35:24
816
原创 C语言在杨氏矩阵中找一个数
有一个杨氏矩阵,每行从左往右是递增的,从上到下是递增的,请编写程序,在这样的矩阵中查找某个数字是否存在。若想知道这个数是在什么位置可以通过结构体带回,或者通过指针带回。定义一个返回值类型为结构体的函数,结构体可以带回来多个数。依次判断右上角的数是不是这个数,>排除一列,<排除一行。(要是没有这个要求我们可以遍历二维数组来实现)时间复杂度小于O(N)
2024-12-21 12:18:10
186
原创 C语言字符串的输入
函数可以读取格式化的输入,包括字符串。但它在遇到空格时会停止读取,因此不适合用来输入包含空格的字符串。函数从标准输入读取一行文本,直到遇到换行符为止,并将其存储在字符数组中。printf("您输入的名字是:%s\n", name);函数,可以逐个字符地读取并存储整行文本,直到遇到换行符为止。可能会导致缓冲区溢出,它在C11标准中已被废弃。printf("请输入您的名字:");后,如果需要再次读取输入,可能需要使用。但需要注意的是,由于。存在安全风险,建议使用更安全的。使用getchar()
2024-12-21 11:16:33
395
原创 字符串函数和内存函数的介绍
上面介绍的三种字符串strcpy,strcat,strcmp都是长度不受限制的,这个时候我们往往需要考虑目标空间够不够大等因素,下面我们来介绍三种长度受限制的字符串,strncpy,strncat,strncmp,再要拷贝,追加,比较时,加上需要使用的字符串的个数,这样程序在设计时就会考虑目标空间能不能放得下的问题,代码相对比较安全。如:我们想将同一个数组中的12345,拷贝到34567那块空间,前面拷贝时时3,4,5的空间的元素发生了改变。
2024-12-21 09:54:26
911
原创 猜名词 猜凶手题目 对 或与 返回值的使用
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。已知3个人说了真话,1个人说的是假话。A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;
2024-12-20 22:05:13
214
原创 指针和数组笔试题详解及sizeof操作符与strlen函数以及数组名的深入理解
2.++cpp,指向的是cp中的第三个元素,对这个它解引用访问到这个元素的值,这个元素的值是c+1的地址,再使这个地址-1(跳过一个char*型)指向的就是c数组中首元素的地址,然后对这个地址进行解引用,得到的就是c数组中的首元素,这个元素是一个指针变量,加减整数跳过char类型的数据,就进入"ENTER"中进行访问,跳过3个字符,指向E,多以打印的结果是ER。&a+1是取出整个数组的地址+1,跳过的是整个数组,指向这个数组后面的一个元素,长度为10个int型元素。所以结果也应该是一个。
2024-12-20 17:12:08
522
原创 冒泡排序与快速排序以及用快速排序的思想改进我们的冒泡排序
我们这个冒泡排序,只能排序整型数组,快速排序则可以将各种类型的数据排序,也可以排序结构体类型的数据。总结:就是根据前面元素是否大于后面元素的判断和交换就行排序的,可以排成升序也可以排成降序。我们的主要思想是一次交换两个数,每交换一趟使这个数来到他最终应该出现的位置。//待排序的数据元素的大小(单位是字节)在使用完快速排序后我们在模仿快速排序的思想写出我们的冒泡排序。我们就可以定义一个比较整数的函数,在使用快速排序,使数组升序。size_t num;//待排序的数据元素个数。//你要排序的数据的起始位置。
2024-12-18 18:05:04
294
原创 指针的深入讲解
signal函数的返回值类型没写,也默认是void。//void(*)(),是函数指针类型,(void(*)())0,是将int型的0,强制类型转换为函数指针类型,这个代码是一次函数调用,调用的是0作为地址处的函数,首先把0强制类型转换为:无参,返回值类型为void的函数的地址。如果函数的形式参数是二级指针,传入的可能是二级指针变量,也可能是一级指针的地址,也可能是指针数组(指针数组是一个存放指针的数组,相当于存放的元素是指针变量,指针变量的地址应该由二级指针接收(二级指针是一个存放一级指针的指针))。
2024-12-18 16:08:38
878
原创 水仙花数,变种水仙花数
水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。变种水仙花数:把任意数字,从中间拆分成两个数字,如果所有拆分后的成绩之后等于自身,则是一个变种水仙花数。求出0~100000之间的所有“水仙花数”并输出。练习2:输出五位数中所有变种水仙花数,如:655=6*55+65*5。
2024-12-16 20:42:14
218
原创 最小公倍数
如求3和5的最大公约数,可以写成3*i=5*j,只需要遍历i在看能不能整除5即可,这样减少了遍历次数,提高了运行效率。直接从大的数开始遍历到找到为止。
2024-12-16 20:12:52
94
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人