自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言习题~day33

然后读入“a”,满足 a 为奇数且是小写字母,将“a”转换为“A”输出,此时 a 变为 2。首先读入“1”,不满足条件,直接输出“1”,此时 a 变为 1。读入“d”,满足条件,转换为“D”输出,此时 a 变为 6。读入“f”,不满足条件,转换为“f”输出,a 变为 7。接着读入“b”,不满足条件,输出“b”,a 变为 3。读入“e”,不满足条件,输出“e”,a 变为 5。读入“d”,不满足条件,输出“d”,a 变为 9。读入“c”,满足条件,输出“C”,a 变为 4。读入“f”,满足条件,输出“F”。

2025-03-01 10:57:09 221

原创 C语言习题~day38

例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”2. 从右往左遍历字符串,每三位一组,遇到一组就添加一个逗号,同时更新起始位置继续往左处理。1. 遍历第二个字符串,将其中的每个字符存储到一个集合(可以用一个简单的标记数组来实现)中。因此,这个数字加上逗号成如下的模样:980,364,535请写一个程序帮她完成这件事情。2. 遍历第一个字符串,对于每个字符,如果它不在集合中,就将其输出。1. 将输入的整数转换为字符串。

2025-03-01 10:56:35 243

原创 C++Hash实现myunordered_map&set

在C++中实现自定义的和时,核心在于仿照标准库的哈希容器设计,围绕哈希表的数据结构展开。两者的底层均依赖动态数组(桶数组)与链表(或红黑树)结合的方式管理元素,通过哈希函数将键映射到桶索引,利用链地址法处理冲突。对于,每个节点需存储键值对,而仅需存储键值Keymap需定义键(Key)、值类型(T)、哈希函数(Hash)和键相等比较(KeyEqual),set则省略值类型。哈希函数需支持默认特化(如)和用户自定义扩展,键相等比较通常通过operator==或自定义仿函数实现。

2025-02-28 18:21:31 947

原创 C语言习题~day25

2.变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。而位顺序类似小端,低地址在低处,所以39是低地址,在低位,38在高位,所以是3839,故选A。有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。第二行输入N个整数,输入用空格分隔的N个整数。

2025-02-28 12:59:39 210

原创 数据结构~哈希

哈希(Hash),也称为散列,是⼀种组织数据的方式。从译名来看,有散乱排列的意思。本质就是通过哈希函数把关键字Key跟存储位置建⽴⼀个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进行快速查找。是计算机领域中一种重要的概念和技术定义:哈希是一种将任意长度的数据映射为固定长度值的方法或过程,这个固定长度的值通常被称为哈希值(Hash Value)、散列值或哈希码(Hash Code)。它就像是数据的 “指纹”,通过特定的哈希函数(Hash Function)来计算得到。

2025-02-28 12:57:51 1392

原创 我的创作纪念日

提示:你过去写得最好的一段代码是什么?提示:当前创作和你的工作、学习是什么样的关系。提示:可以和大家分享最初成为创作者的初心。提示:在创作的过程中都有哪些收获。提示:职业规划、创作规划等​​。

2025-02-23 22:01:32 255

原创 C语言习题~day11

D:错误,Release版本是不能调试的,一般都是在Debug版本下调试的,Release版本一般编译器会进行大量的优化,删除无用的代码,指令的次序调整等,让其速度更快。B:正确,Release版本最终是要发送给用户的,发给用户的版本必须要没有问题,测试人员就是最后一个把关的。A:正确,Debug为调试版本,一般在开发完成后发布工程前,调试代码都是在Debug模式下进行的。A:错误,F5是开始调试,在遇到短点的位置可以停下来,Ctrl+F5是开始执行,不调试。B.F10-是逐过程调试,遇到函数不进入函数。

2024-12-20 11:25:44 365

原创 C语言习题~day25

2.变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。而位顺序类似小端,低地址在低处,所以39是低地址,在低位,38在高位,所以是3839,故选A。有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。第二行输入N个整数,输入用空格分隔的N个整数。

2024-11-25 11:35:30 197

原创 Linux--基本指令(二)

tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.cal命令可以用来显示公历(阳历)日历。在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已[root@linux ~]# cd /tmp。我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,

2024-11-25 11:31:44 1381

原创 C语言习题~day13

按位异或运算是将两个操作数的对应位进行异或操作,如果两个对应位的值不同,则结果为 1,如果两个对应位的值相同,则结果为 0。但在这种情况下,我们已经得到了 8 位二进制补码的表示。第一次循环:n=9999 n=n&(n-1)=9999&9998= 9998。第二次循环:n=9998 n=n&(n-1)=9998&9997= 9996。第五次循环:n=9984 n=n&(n-1)=9984&9983= 9728。第六次循环:n=9728 n=n&(n-1)=9728&9727= 9216。

2024-11-24 22:45:16 907

原创 C语言习题~day11

D:错误,Release版本是不能调试的,一般都是在Debug版本下调试的,Release版本一般编译器会进行大量的优化,删除无用的代码,指令的次序调整等,让其速度更快。B:正确,Release版本最终是要发送给用户的,发给用户的版本必须要没有问题,测试人员就是最后一个把关的。A:正确,Debug为调试版本,一般在开发完成后发布工程前,调试代码都是在Debug模式下进行的。A:错误,F5是开始调试,在遇到短点的位置可以停下来,Ctrl+F5是开始执行,不调试。B.F10-是逐过程调试,遇到函数不进入函数。

2024-11-22 11:53:34 273

原创 C++RedBlackTree实现set&map

整体思路数据结构基础:红黑树是一种自平衡二叉搜索树,通过在每个节点上添加一个表示颜色的属性(通常为红色或黑色),并在插入和删除等操作后进行一系列调整来维持树的平衡,从而保证基本操作(如插入、删除、查找等)能在对数时间复杂度内完成。实现目标:利用红黑树的特性来构建类似set(集合,存储唯一元素)和map(键值对集合)的数据结构,使其具有高效的插入、删除和查找性能。关键实现步骤节点定义。

2024-11-22 11:52:07 1555

原创 C语言习题~day20

找出一个只出现过一次的数字的问题处理方法就是找一个数字把里面所有的数字都异或一遍,利用异或两次等于没异或的特点来处理。例如找最低位,那么这一位是1的有1 3 1,是0的有2 4 2,由于是利用异或结果为1的某一位分的组,所以两个待查询数字一定分别在两组中。在 C 语言中,转移表是一个函数指针数组,数组中的每个元素都是一个函数指针,指向一个特定的函数。通过使用转移表,可以以数组的方式调用其中的函数,从而在某些情况下替代冗长的switch语句。通过输入的操作符选择对应的函数指针,并调用相应的函数进行运算。

2024-11-20 09:04:14 300

原创 C语言习题~day27

A:printf函数的使用也是错误的, 如果要打印printf("%s", str);这个是str指针是正常的情况下, 是可以的。说明:此题考的是“局部变量的指针不能做返回值,因为函数内的空间在函数返回后就会释放调”这一点。使用malloc函数模拟开辟一个3*5的整型二维数组,开辟好后,使用二维数组的下标访问形式,访问空间。核心问题就是子函数中的p是临时变量,改变它并不会改变主函数中的str。A选项,是对的,free函数传递NULL指针,什么事情都不发生。C.对动态内存的多次释放。B,C,D都是错误的。

2024-11-20 09:02:57 318

原创 C++STL~~unordered_set&unordered_map

性能特点平均时间复杂度:插入、删除和查找操作的平均时间复杂度接近常数时间O(1)。这是因为通过哈希函数能够快速定位元素所在的桶,在桶内进行操作的时间复杂度通常较低。最坏情况时间复杂度:在最坏情况下,例如哈希函数设计不合理,导致大量元素哈希到同一个桶中,时间复杂度会退化为线性时间O(n)。不过在实际应用中,这种情况可以通过合理设计哈希函数和调整哈希表的参数来尽量避免。与其他容器的比较与set的比较:set是基于红黑树实现的有序容器,元素插入和查找的时间复杂度为O(logn)。

2024-11-19 16:01:29 1436

原创 C语言习题~day33

然后读入“a”,满足 a 为奇数且是小写字母,将“a”转换为“A”输出,此时 a 变为 2。首先读入“1”,不满足条件,直接输出“1”,此时 a 变为 1。读入“d”,满足条件,转换为“D”输出,此时 a 变为 6。读入“f”,不满足条件,转换为“f”输出,a 变为 7。接着读入“b”,不满足条件,输出“b”,a 变为 3。读入“e”,不满足条件,输出“e”,a 变为 5。读入“d”,不满足条件,输出“d”,a 变为 9。读入“c”,满足条件,输出“C”,a 变为 4。读入“f”,满足条件,输出“F”。

2024-10-27 14:20:55 354

原创 数据结构~红黑树

/ 枚举值表示颜色RED,BLACK// 这里我们默认按key/value结构实现// 这里更新控制平衡也要加入parent指针:_kv(kv){}public:private:一、整体结构实现了一个红黑树的数据结构。红黑树是一种自平衡的二叉搜索树,它在插入和删除节点时通过旋转和重新着色操作来保持树的平衡,从而保证了高效的插入、删除和查找操作。二、枚举类型Colour定义了一个枚举类型Colour,用于表示节点的颜色,只有两种可能的值:RED和BLACK。

2024-10-24 10:46:59 1559

原创 C语言习题~day16

B:正确,形参按照指针方式传递,将来形参就是实参地址的一份拷贝,形参指向的是实参,修改形参指针指向的内容, 就是在操作实参。D:正确,函数可以嵌套调用,即:A()中调用B(),B()中调用A(),但是要控制好,否则就成为无限递归。A:正确,形参按照值的方式传递,将来形参就是实参的一份临时拷贝,修改形参不会影响外部的实参。A.函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝。B.函数可以传址调用,传址调用的时候,可以通过形参操作实参。C:错误,C语言中,函数不能嵌套定义。

2024-10-20 13:53:26 442

原创 C语言习题~day13

按位异或运算是将两个操作数的对应位进行异或操作,如果两个对应位的值不同,则结果为 1,如果两个对应位的值相同,则结果为 0。如果需要将补码表示转换回原始的负数,可以将补码再次取反,并加上负号。a = 12 的二进制表示为 1100 b = 5 的二进制表示为 0101。x = 9 的二进制表示为 1001 y = 3 的二进制表示为 0011。D.原码、反码、补码的最高位是0表示负数,最高位是1表示正数。B.反码是原码的二进制符号位不变,其他位按位取反。的结果是 1010,转换为十进制数为 10。

2024-10-20 13:52:23 343

原创 数据结构~AVL树

定义了一个 AVL 树的数据结构。它包含了一个结构体AVLTreeNode和一个AVLTree。AVLTreeNode结构体:成员变量:_kv:存储键值对的数据成员,类型为pair。_left、_right和_parent:分别指向左子树、右子树和父节点的指针。_bf:表示平衡因子,用于判断树的平衡性。构造函数:接受一个pair类型的参数,用于初始化_kv成员,并将其他指针成员初始化为nullptr,平衡因子初始化为 0。

2024-10-15 16:22:29 2191 1

原创 C++STL~~map

1.性能特点查找效率高基于内部的红黑树实现(在大多数标准库实现中),std::map的查找操作具有对数时间复杂度O(logn),其中是容器中的元素数量。这使得在大规模数据中快速查找键 - 值对成为可能。插入和删除相对高效插入和删除操作也具有对数时间复杂度O(logn),因为在插入或删除元素时,红黑树需要进行平衡调整操作。2.与其他容器的关系和区别与std::vector等顺序容器的区别。

2024-10-11 09:25:31 1295

原创 C语言习题~day7

str字符数组使用"hello bit"初始化,最终也会将'\0'放置到数组中,因此数组中总共有10个元素。sizeof(str):获取数组的总大小,10个元素,每个元素占1个字节,因此总共是10个字节。strlen(str): 获取字符串中有效字符的个数,不算'\0',因此总共9个有效字符。故上述printf会分别打印:10 9。

2024-10-03 20:04:25 296

原创 C++STL~~set

特点元素唯一性:set中的元素是唯一的,不允许重复。在插入元素时,如果尝试插入已存在的元素,set不会进行任何改变。有序性:默认情况下,set中的元素按照升序排列。可以通过自定义比较函数来改变排序规则。常用操作创建与初始化:创建一个空的存储int类型元素的set。创建并初始化一个包含特定元素的set。插入元素:插入单个元素。插入操作的平均时间复杂度为O(logn),其中n是set中元素的个数。删除元素:删除特定值的元素。通过迭代器删除特定位置的元素。

2024-10-03 19:58:33 1701

原创 数据结构~~链表

链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的

2024-09-30 22:49:47 982

原创 C语言习题~day12

D:正确,因为每次递归,相当于都是一次新的函数调用,而每次函数调用系统必须给该函数划分栈帧空间,内部的递归函数没有退出,上层的递归就不能退出,栈帧就会累积许多块,如果累积超过栈的总大小,就会栈溢出。例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 输入:1729,输出:19。B:正确,因为每次递归,都是将原问题进一步缩小,缩小到限制条件时,就可以往回返,直到第一次递归调用。从右到左,权重的幂逐渐增加。A:正确,限制条件即递归的出口,如果限制条件满足,递归程序就可以退出了。

2024-09-28 22:24:21 441

原创 数据结构~二叉搜索树

优点:查找、插入、删除操作的时间复杂度在平均情况下为 ,效率较高,特别是对于经常进行动态插入和查找操作的数据集合非常适用。中序遍历可以方便地得到有序的数据序列,无需额外的排序操作。缺点:最坏情况下(例如树退化为链表),查找、插入、删除操作的时间复杂度会退化到 ,性能下降严重。二叉搜索树的平衡情况依赖于插入和删除操作的顺序,如果数据的插入顺序不合理,可能会导致树的不平衡,影响操作的效率。

2024-09-24 14:52:21 1263

原创 C++多态(Polymorphism)

1.多态的构成条件多态是⼀个继承关系的下的类对象,去调用同⼀函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象优惠买票。必须指针或者引用调用虚函数被调用的函数必须是虚函数。说明:要实现多态效果,第⼀必须是基类的指针或引用,因为只有基类的指针或引用才能既指向派生类对象;第⼆派生类必须对基类的虚函数重写/覆盖,重写或者覆盖了,派生类才能有不同的函数,多态的不同形态效果才能达到。2.虚函数。

2024-09-24 12:23:31 1354

原创 C语言习题~day35

数组 p 中第二行实际存储的是 {3, 2, 0, 0} (因为每行都要填满 4 个元素,不足的用 0 补齐),所以 p[1][2] 的值是 0。然后计算f(f(2))=f(3),对于f(3),因为 3 大于 2,所以返回3*f(2),即3*3=9,所以最终i=9。先计算内层的f(2),因为 2 不大于 2,所以返回 3,即f(2)=3。元素的顺序可能发生改变。执行如上函数后. i的值为()p[1][2]的值是()

2024-09-21 12:12:50 571

原创 C++继承(inheritance)

1.概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前接触的函数层次的复用,继承是类设计层次的复用。2.定义下⾯可以看到Person是基类,也称作父类。Student是派生类,也称作子类。(因为翻译的原因,所以既叫基类/派生类,也叫父类/子类)继承基类成员访问方式的变化。

2024-09-19 14:42:21 1761

原创 C++STL~~priority_queue

应用场景任务调度:可以根据任务的优先级对任务进行排序,高优先级的任务先执行。例如操作系统中的进程调度。图算法:在一些图算法中,如 Dijkstra 最短路径算法,可以使用优先队列来存储未访问的节点,并根据距离源点的距离进行优先级排序。事件处理:处理事件时,可以根据事件的时间戳或其他优先级属性对事件进行排序,以便按照优先级顺序处理事件。优势与注意事项优势:高效的优先级访问,适用于需要快速确定最高优先级元素的场景。基于堆的实现,保证了插入和删除操作的高效性。

2024-09-18 19:13:26 1259

原创 C++STL~~deque

deque的特点1.两端高效操作deque的主要优势在于可以在其前端和后端快速地插入和删除元素,时间复杂度均为常量级别。这使得它非常适合那些需要在队列两端频繁进行操作的场景,比如实现栈(在一端进行插入和删除)和队列(在两端分别进行插入和删除)的数据结构。2.动态大小与其他标准容器一样,deque可以根据需要自动调整其大小以容纳更多或更少的元素。它可以在运行时动态地增长或收缩,无需预先确定其最大容量。3.随机访问deque支持随机访问元素,就像数组一样。

2024-09-16 00:48:05 1185

原创 C语言习题~day32

第一次循环,i 从 7 减 3 变为 4,j 加 1 变为 1;第二次循环,i 变为 1,j 变为 2;第三次循环,i 变为 253(7 减 3 溢出后变为 253),j 加 1 变为 3;第四次循环,i 变为 250,j 加 1 变为 4;第五次循环,i 变为 247,j 加 1 变为 5;依次类推,直到 i 变为 0 时,循环结束。从 7 开始每次减 3,7、4、1、253、250、247。输入:[9,6,4,2,3,5,7,0,1]无符号字符型的取值范围是 0 到 255。输入:[3,0,1]

2024-09-15 09:15:55 562

原创 C语言习题~day20

找出一个只出现过一次的数字的问题处理方法就是找一个数字把里面所有的数字都异或一遍,利用异或两次等于没异或的特点来处理。例如找最低位,那么这一位是1的有1 3 1,是0的有2 4 2,由于是利用异或结果为1的某一位分的组,所以两个待查询数字一定分别在两组中。在 C 语言中,转移表是一个函数指针数组,数组中的每个元素都是一个函数指针,指向一个特定的函数。通过使用转移表,可以以数组的方式调用其中的函数,从而在某些情况下替代冗长的switch语句。通过输入的操作符选择对应的函数指针,并调用相应的函数进行运算。

2024-09-15 09:12:39 447

原创 C语言习题~day18

比如:从右上角开始查找的时候,右上角的元素比我们要查找元素小,我们就可以去掉右上角元素所在的这一行;右上角的元素比我们要查找的元素大,我们就可以去掉右上角元素所在的这一列。str1和str2是两个数组,数组的操作方式是将右边常量字符串的内容拷贝进来,所以他们是两个空间,只是内容相同,所以str1!而str3和str4是两个指针,编译器在处理的时候,会将相同的常量字符串做成同一个地址,所以,str3和str4指向的是同一个常量字符串,所以str3 == str4,故选C。所以我们只要按照这个方法填表即可。

2024-09-15 09:10:11 628

原创 C++STL~~stack&queue

数据结构~~栈和队列栈(Stack)后进先出原则。主要操作包括入栈(push)和出栈(pop)。常用于函数调用、表达式求值、括号匹配等场景。队列(Queue)先进先出原则。主要操作包括入队(enqueue)和出队(dequeue)。常用于任务调度、排队系统、广度优先搜索等。两者都是基本的数据结构,具有不同的特点和适用场景,在程序设计中发挥着重要作用。

2024-09-14 15:23:41 1539

原创 Linux--基本指令(一)

Linux 是一种自由和开放源代码的类 Unix 操作系统。它的内核由林纳斯・托瓦兹(Linus Torvalds)于 1991 年首次发布。在服务器市场,Linux 占据了重要地位。它被广泛应用于 Web 服务器、数据库服务器、文件服务器等。Linux 的稳定性、安全性和高性能使其能够满足企业级应用的需求,同时其开源特性也降低了维护成本。

2024-09-11 14:25:38 1106

原创 C语言习题~day28

f系列的输入输出函数都是作用于所有流的的,所以AC没问题,D的表述也没问题,fread做的就是二进制的活。程序只通过只读方式打开了一个文件,所以A排除,文中使用的fgetc,且没有' '和'\n'相关的统计,所以排除CD,直接选B。C.将内存中的数据转化成ASCII码值的形式,并以ASCII码值的形式存储的文件就是文本文件。B.fopen打开文件的方式是"w",如果文件不存在,则创建该文件,打开成功。A.fopen打开文件的方式是"r",如果文件不存在,则打开文件失败。C.fopen函数的返回值无需判断。

2024-09-01 16:12:43 548

原创 C语言习题~day37

预处理主要处理宏等操作;char 类型会自动提升为 int 类型参与运算,int 与 double 运算时结果会转换为 double 类型,float 与 double 运算时也会转换为 double 类型,所以最终表达式 a*b+d-c 的值的类型为 double 类型。先计算 Y(5+1),Y(5+1)展开为 ((N+1)*5+1),即 ((4+1)*5+1)=(5*5+1)=26。4. 用英尺值减去其整数部分得到小数部分,再乘以 12 将其转换为英寸,同样通过强制类型转换获取英寸的整数部分。

2024-08-31 23:05:15 431

原创 C++STL~~list

容器特点list是一种双向链表容器,具有以下显著特点:动态性强:可以根据需要随时添加或删除元素,无需担心预先分配固定大小的内存问题。插入和删除高效:在链表的任意位置进行插入和删除操作的时间复杂度为常数级别,这使得它在频繁进行此类操作的场景下表现出色。迭代灵活:提供双向迭代器,可方便地进行正向和反向遍历。但不支持随机访问,访问特定位置的元素相对较慢。适用场景频繁插入和删除:当需要在容器中频繁地进行插入和删除操作时,list是一个很好的选择。

2024-08-30 23:21:42 2032

原创 C++STL~~vector

vector的应用场景1、数据存储:适用于存储一组同类型的数据,如整数列表、字符串集合等。可以方便地进行添加、删除、访问和修改元素的操作。2、动态数据结构:在需要动态调整大小的场景中非常有用,比如在算法中存储中间结果、处理用户输入的动态数据等。3、与其他库和算法的交互:std::vector可以与 C++ 标准库中的其他组件(如算法、迭代器等)很好地配合使用。许多算法都接受std::vector作为输入或输出容器,使得代码更加简洁和高效。

2024-08-28 14:50:59 1396

空空如也

空空如也

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

TA关注的人

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