![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 76
爱编程的鱼
这个月摆烂了,哈哈哈哈。希望九月份不要太忙(●'◡'●)。
展开
-
c++用什么软件编程?都有哪些?
C++ 作为一种高效、面向对象的编程语言,广泛应用于软件开发、游戏开发、嵌入式系统等领域。那么在进行 C++ 编程时,我们通常会使用哪些软件呢?下面就来具体分析。原创 2024-06-29 20:40:00 · 3366 阅读 · 1 评论 -
C语言编程十大面试题及答案
答案:变量/函数的声明仅声明变量/函数存在于程序中的某个位置,但未为其分配内存。在声明函数的情况下,程序会知道该函数的参数是什么,它们的数据类型,参数的顺序以及函数的返回类型。关于定义,当我们定义变量/函数时,除了声明的作用外,它还为该变量/函数分配内存。答案:在C语言中,默认情况下函数是全局的。与C中的全局函数不同,对静态函数的访问仅限于声明它们的文件。当删除或释放对象时,如果不修改指针的值,就会出现悬空指针,因此指针仍然指向释放后的内存的存储位置。答案:变量的范围是程序的一部分,可以直接访问该变量。原创 2024-06-27 20:16:02 · 512 阅读 · 1 评论 -
Python with MATLAB
实习生表示他不会Python,但是只要能完成老板布置的工作,哪个语言都无所谓。今天就请他为大家展示下如何在MATLAB中调用Python的BeautifulSoup进行网页的解析。他说,Python的某些库比MATLAB要好用,比如做网页解析的BeautifulSoup,MATLAB里面虽然有轻量级的。说完实习生就走了,然而他忘记了展示如何使用BeautifulSoup, 后来再问他的时候,他说。1. 找到第三方Python库的egg包,比如我的BeautifulSoupzhu在了。原创 2024-06-22 05:59:34 · 618 阅读 · 1 评论 -
最流行的后端框架:如何选择适合自己的框架
在当今快节奏的数字环境中,软件开发需要高效、可扩展且可靠的解决方案。最流行的后端框架,这就是后端框架的用武之地。这些软件框架提供了构建 Web 应用程序的骨干,处理了从数据库交互到安全的一切事务。随着开发人员面临着越来越大的压力,要求他们快速交付高质量的应用程序,选择合适的框架可能是一项艰巨的任务。所以本次文章深入探讨了当今最流行的一些后端框架的世界,突出了它们的优缺点,以帮助您做出明智的决定。正在上传…重新上传取消。原创 2024-06-13 21:13:39 · 608 阅读 · 1 评论 -
编程都该学什么语言?几个流行编程语言对比
但是C#与Java又有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,并且它是微软公司 .NET windows网络框架的主角。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。这个是得结合自己的实际情况和预期的工作,不要盲目的学习,在学习的过程中要注重实践,同时学习一些数据结构、算法方面的知识点,这样才能让你所学的编程语言发挥它所具有的最大潜力。原创 2024-06-09 14:25:39 · 791 阅读 · 1 评论 -
C语言中的 ?: :三元运算符详解
在C语言的编程世界中,三元运算符如同一位技艺精湛的工匠,以其独特的魅力为代码增添了一份优雅与高效。合理地使用三元运算符,可以使代码更加简洁易读,提高代码质量。但同时也要注意避免滥用,保持代码的清晰易懂,才能真正发挥其优势,让代码如同艺术品般赏心悦目。原创 2024-05-25 07:42:59 · 1676 阅读 · 1 评论 -
(2)快速排序 (Quick Sort)
快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。原创 2024-05-08 19:07:57 · 642 阅读 · 1 评论 -
(1)冒泡排序 (Bubble Sort)
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。由于它的简洁,冒泡排序通常被用来对于程序设计入门的学生介绍算法的概念。图片来自维基百科。原创 2024-05-08 19:07:04 · 224 阅读 · 1 评论 -
为何大学计算机专业以C语言入门?探究C语言入门的好处
C语言作为大学计算机专业的入门语言,以其简洁的语法、接近底层的特性、跨平台性和广泛应用性而受到青睐。学习C语言能够培养学生的基础编程能力,提高算法和数据结构理解,增强调试和优化技能,并为学习其他编程语言打下坚实基础。原创 2024-05-07 18:55:45 · 336 阅读 · 1 评论 -
C语言:初学者和专家的分水岭
C语言作为菜鸟和大神之间的分水岭,对于初学者来说,它是一个全新的世界,关注于基本语法和功能的实现。对于专家级开发者来说,C语言则是他们深入研究和实现复杂算法和数据结构的基础。通过不断学习和实践,初学者可以逐渐成长为专家,掌握C语言开发的高级技巧和应用。无论是初学者还是专家,C语言都提供了丰富的学习和创造的机会,让你在编程世界中不断进步。原创 2024-05-07 18:52:22 · 393 阅读 · 2 评论 -
C++中的多值返回:解锁函数返回值的神奇力量
通过引用、指针、结构体和标准库中的tuple,C++提供了多种方式来实现多值返回的需求。选择合适的方法取决于具体的场景和需求。理解这些方法的优势和适用性可以使我们编写更灵活、可维护的代码,并满足多值返回的需求。在日常的C++编程中,我们可以根据具体情况选择最适合的方法,并根据需要灵活地使用这些技巧。原创 2024-03-15 21:57:03 · 561 阅读 · 1 评论 -
基础算法-高精度除法
压位的话,需要格式化输出,最高位直接输出即可,其他位都需要输出4位数字,不足的前面补零。容器类型用 begin() 和 end() 来指定反转的区域,数组类型用int类型。短整型 short int 2 (-2的15次方)~(2的15次方-1)长整型 long long 8 (-2的63次方)~(2的63次方-1)整型 int 4 (-2的31次方)~(2的31次方-1)C++ 每一个变量都有自己的类型,每个类型都有自己的存储长度范围。原创 2024-03-09 17:19:40 · 517 阅读 · 1 评论 -
你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序
在表达一些比较复杂的条件判断时,在同一个表达式中,有时可能会存在多个操作符。比如,我们在判断要不要买某个西瓜时,不仅要 判断它的总价(单价8.2元/斤,一共10.3斤)是否小于100块钱(因为兜里只有这么多钱),同时还要判断这个西瓜是否有坏掉的地方。要表达这个复杂 的条件判断,我们不得不把前面学过的算术操作符、关系操作符和逻辑操作符全都派上场:在“fPrice * fWeight < 100 &&!bBad”这个表达式中,有算术操作符“*”,有关系操作符“原创 2024-03-02 09:39:20 · 1331 阅读 · 1 评论 -
C++标准库与Boost库:功能丰富的开发工具集
C++标准库和Boost库是C++开发者的得力工具,为我们提供了广泛的功能和组件,用于解决各种问题和应对不同的编程需求。C++标准库提供了基本的功能和容器类,而Boost库则进一步扩展了C++的功能,提供了更多的工具和组件。通过熟练掌握和灵活运用这些库,我们能够更加高效地开发C++应用程序,并提高代码的质量和可维护性。原创 2024-02-23 20:59:31 · 938 阅读 · 1 评论 -
C++中的volatile:穿越编译器的屏障
volatile关键字在C++中用于修饰变量,用于告知编译器该变量的值可能会在意料之外的情况下被修改。它主要用于禁止编译器优化、与硬件交互以及多线程环境下的数据共享。然而,使用volatile关键字并不能解决所有的多线程问题,需要结合其他线程同步机制来确保线程安全。在C++11及更高版本中,推荐使用std::atomic模板类来进行原子操作和线程安全编程。原创 2024-02-16 19:45:23 · 1033 阅读 · 1 评论 -
你好,C++(15)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符
在这个条件判断中,我们用“&&”操作符对“nChs >= 60”和“nMath >= 60”进行“与”运算,如果nChs的值小于60,也就是第一个条件表达式“nChs >= 60”的值为false时,无论后面的“nMath >= 60”表达式的值为true或者false,我们都已经能够确定整个表达式的值为false,C++将用false作为整个表达式的值,跳过对后面“nMath >= 60” 的判断而直接结束对整个表达式的计算。例如,上面的代码可以修改为下面的样子,以保证代码行为的一致。原创 2024-02-15 18:01:51 · 1283 阅读 · 1 评论 -
你好,C++(14)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算
操作数就是要参与运算的数据,它可以是变量表示的数据,也可以是直接表示的常数。比如,一个加法运算表达式“a + 5”中,变量“a”和常数“5”是这个表达式的操作数,而连接这两个操作数的是加法运算操作符“+”,表示将它所连接的两个操作数“a”和“5”进行加和运算得到结果。这些复合的赋值操作符同样是二元操作符,它们首先将两侧的操作数按照复合操作符中的算术或位运算操作符进行计算,这时参与计算的是变量的当前值,得到计算结果后再赋值给左侧的操作数,从而在计算的同时完成了赋值,实现了计算和赋值的复合。原创 2024-02-15 18:00:20 · 971 阅读 · 1 评论 -
你好,C++(13)四两拨千斤——3.9 指向内存位置的指针
指针,作为一种表示内存地址的特殊变量,其定义的形式也有一定的特殊性:数据类型* 变量名;其中,我们用指针所表示地址上的数据类型来作为定义指针变量时用的数据类型。比如,我们要定义一个指针来表示某个int类型数 据的地址,那么指针定义中的数据类型就是int。这个数据类型是由指针所指向的数据来决定的,可以是int、string和double等基本数据类型, 也可以是自定义的结构体等复杂数据类型。简而言之,指针指向的数据是什么类型,就用这种类型作为指针变量定义时的数据类型。原创 2024-02-13 20:24:42 · 827 阅读 · 1 评论 -
你好,C++(12)如何管理多个类型相同性质相同的数据?3.6 数组
学过前面的基本数据类型之后,我们现在可以定义单个变量来表示单个的数据。例如,我们可以用int类型定义变量来表示公交车的 216路;可以用float类型定义变量来表示西红柿3.5元一斤。但是,除了单个孤立的数据之外,现实世界中还有一类批量数据。例如,一个公司所有员工 的工资,这些数据的数据类型相同(都是int类型),性质相同(都表示员工的工资),数量很多(成千上万员工的工资),并且往往形成一个有意义的数据集合 (员工工资)。针对这类的批量数据,单独地定义一个一个的变量来表示显然是行不通的。原创 2024-02-12 17:08:25 · 1057 阅读 · 1 评论 -
你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)
但是,这种方式好是好,却有一个缺点, 那就是每次推断得到的数据类型只能在定义变量的时候使用一次,无法保留下来继续使用。通常在定义变量时,如果我们很难准确地推断它的数据类型,或者是这个变量的数据类型难于书写,就可以使用auto作为变量的数据类型来定义变量,而 真正的数据类型就交由编译器去根据变量的初始值推断得到好了。string类型不仅包装了字符数组,可以存储字符串中的各个字符,同时还提供了很多跟字符串相关的操作,例如,可以获得一个字符串的长度,或者在字符串中查找某个字符等等,极大地方便了对字符串的处理。原创 2024-02-11 16:50:58 · 1065 阅读 · 1 评论 -
基础算法-高精度减法
在数据处理当中,我们会常使用减法运算,例如:当有一个数123456789时,可以使用数组对其每一位进行存储,那么数组第 0 存储数的个位 9 ,便于我们借位操作,在高位上补充数字。高精度减法即模拟减法运算,从个位算起,得出差判断是否大于 0 ,若大于等于 0 则直接减去即可,若小于 0 ,则需进行借位操作,上一位 -1。在实现过程中,需要使用三个数组进行存储,两个对减数和被减数存储,一个对差存储,最后对存储和的数组进行变换操作或者反向输出即得高精度减法结果。计算过程:不压位的话,除数和模数都是10;原创 2024-02-10 10:07:15 · 428 阅读 · 1 评论 -
基础算法-高精度加法
为什么要使用高精度算法C++ 每一个变量都有自己的类型,每个类型都有自己的存储长度范围。名称 关键字 字节 长度短整型 short int 2 (-2的15次方)~(2的15次方-1)整型 int 4 (-2的31次方)~(2的31次方-1)长整型 long long 8 (-2的63次方)~(2的63次方-1)原创 2024-02-10 10:04:35 · 508 阅读 · 1 评论 -
通俗易懂:快速排序算法全解析
快速排序是一种高效的分治排序算法,通过选择基准元素和不断划分子数组来实现排序。它具有优秀的性能和广泛的应用场景,特别适合处理大规模数据集。了解快速排序的原理和步骤,以及掌握优化策略,可以帮助开发人员选择合适的算法,并编写出高效的排序代码。原创 2024-02-08 17:41:04 · 851 阅读 · 1 评论 -
C++移动语义:提升性能和资源管理的新境界
移动语义是现代C++编程中的重要特性,它通过避免不必要的数据复制和资源浪费,提高了程序的性能和资源管理效率。通过使用移动构造函数和右值引用,我们可以将资源的所有权从一个对象转移到另一个对象,而无需进行数据复制。在适当的场景下,合理地利用移动语义可以优化内存管理、容器操作和大型对象传递等关键方面。然而,在实现和使用移动语义时,需要注意正确的实现和使用方式,以避免潜在的错误和资源泄漏。原创 2024-01-31 14:48:09 · 1230 阅读 · 1 评论 -
你好,C++(10)这次的C++考试你过了没有?C++中表示逻辑判断的布尔数据类型
面对现实世界中的各种数值数据(比如,表示公交车路线的 216路,表示西红柿价格的3.5元一斤),我们可以用之前所介绍的数值数据类型定义变量(int nNo,float fPrice)来抽象和表达。为了弥补char类型的不足,C++提供了另外一种字符数据类型wchar_t,它 占用2个字节的内存空间,取值范围更广,因而可以表示更大范围的字符,当然也包括中文字符了。在其后的if条件结构中,bPass又被用作了条件判断的依据,如果bPass的值为true,则输出考试通过的提示,否则,就输出考试未通过的提示。原创 2024-01-28 08:45:34 · 858 阅读 · 1 评论 -
你好,C++(9)坐216路公交车去买3.5元一斤的西红柿——C++中如何表达各种数值数据 3.3 数值数据类型
在这段程序中,我们首先引入了C++标准库中关于随机数的头文件,然后,我们就可以定义相应的随机数引擎对象 (reng)和分布对象(uni_dist),在定义分布对象的同时,我们以构造函数参数的形式,确定了随机数的取值范围。有时候,我们需要表达的整数只是在一个比较小的范围内,比如,我们要表达一个学生的成绩,最小可以到0,而最大也只能到 100,如果这时仍旧使用int这种取值范围比较大的数据类型来表示,就显得有点资源浪费了。各种无符号类型所占用的内存空间与相应的有符号类型占用的内存空间是相同的。原创 2024-01-27 14:43:12 · 935 阅读 · 1 评论 -
基础算法-浮点二分
返回值:返回幂指数的结果,即 x 的 y 次幂。若 x 为负数且 y 为 小数,或者 x 为 0 且 y 小于等于 0 ,将出现结果错误。引用头文件 #include,常用cout原创 2024-01-26 15:42:56 · 407 阅读 · 1 评论 -
你好,C++(8)如何表达那些始终保持不变的数据量?3.2.2 常量
但是第二种方式要比第一种方式好,因为如果使用#define将这个常数定义成宏 PI,PI会在代码的预编译阶段被预编译处理器替换成3.14159这个常数本身,这样就没有了编译器的数据类型检查, 并且,宏的名称不会出现在符号表中,这样会给代码后期的调试带来麻烦,可能会遇到一个数字,却不知道它从何而来,这就是我们常说的Magic Number(像拥有魔力一样不知从何而来的数字)。当我们需要在字符串中频繁地表示各种特殊符号(反斜杠,引号等)的时候,原生字符串将非常简便,而这一点点书写上的冗长也是值得的。原创 2024-01-25 13:42:55 · 1322 阅读 · 1 评论 -
你好,C++(7)第三部分 C++世界众生相 3.2.1 变量的定义与初始化
为了保存数据,我们首先需要为它开辟合适的内存空间。同时,对于程序中的变量而言,我们往往需要对其进行多次读写访问。为了 便于访问变量,我们往往需要给变量一个名字,然后通过变量名访问它所代表的数据。数据类型说明符 变量名;// 同时定义相同类型的多个变量// 不推荐的形式 ,多个变量容易让人混淆,代码缺乏可读性数据类型说明符 变量名1,变量名2,变量名n;变量定义由数据类型说明符和变量名两部分构成。原创 2024-01-24 08:42:49 · 1042 阅读 · 1 评论 -
你好,C++(6)2.3 C++兵器谱
在Windows平台上,有众多的图形化的集成开发环境,除了我们前面所介绍的最常用的Visual Studio之外,还有支持跨平台的Eclipse CDT和Code::Blocks,更有小巧的Dev-C++等。更重要的,这些问题的答案都是 来自于世界各地的技术高超经验丰富的程序员,并经过用户的投票排序,所以答案的质量特别高。)就是一本C++词典。实际上,在Linux /UNIX平台上,因为缺少图形化的集成开发工具的支持,C++程序的创建基本上都是用GCC编译器,再配合其他编辑调试工具,以手工的方式完成的。原创 2024-01-23 10:47:02 · 979 阅读 · 1 评论 -
你好,C++(5)如何输出数据到屏幕、从屏幕输入数据与读写文件?
这里所谓的转义字符, 就是在某些字符前加上“\”符号构成的特殊字符,这些字符不再表达它原本的含义,转而表达的是对格式的控制或其他特殊意义,所以被称为转义字符。同样,为了将数据写入文件,需要创建一个输出文件流ofstream的对象fout,同时通过它的构造函数或open()函数 来打开一个文件,将这个文件和fout对象关联起来,然后通过插入符“原创 2024-01-22 12:45:05 · 1016 阅读 · 1 评论 -
基础算法-整数二分
当 mid=l+r>>1 时,查找值指向箭头1位置,检查 mid 是否满足蓝色部分性质,如果成立的话,mid 便在蓝色区域当中,此时,查找值便在区域 [l,mid] 里面,这里要注意包含边界,因为我们的查找值可能就是边界,此时更新边界的方法为 r=mid。当 mid=l+r+1>>1 时,查找值指向箭头2位置,检查 mid 是否满足红色部分性质,如果成立的话,mid 便在红色区域当中,此时,查找值便在区域 [mid,r] 里面,此时更新边界的方法为 l=mid。单调性与二分法并没有直接关系。原创 2024-01-20 15:12:44 · 1034 阅读 · 1 评论 -
你好,C++(4)2.1.3 我的父亲母亲:编译器和链接器 2.1.4 C++程序执行背后的故事
源文件HelloWorld.cpp经过我爸编译器 的编译后,得到的还只是一个无法直接执行的目标文件HelloWorld.obj,还需要我妈链接器将这个目标文件和Visual C++所提供的标准库目标文件(比如,libcpmt.lib)整合成最终的可执行文件(从标准库目标文件中查找程序目标文件所用到的外部函数等符号,然 后填写到程序目标文件以生成最终的可执行文件),这一过程就被称之为链接。但是,作为程序执行的调度者,它并不负责程序的执行,具体的执行工作,则是由它所创建的线程来完成的。数据和算法伴随我的一生。原创 2024-01-20 15:06:14 · 906 阅读 · 1 评论 -
深入C++继承:面向对象编程的核心概念
C++中的继承是面向对象编程的核心概念之一,它提供了代码重用、功能扩展、多态性和系统组织等诸多优势。通过继承,我们可以构建出具有层次结构的类,实现代码的重用和扩展,并使得系统更加灵活和可维护。然而,在使用继承时需要谨慎,遵循良好的设计原则,以避免继承滥用和导致代码复杂性的增加。通过深入理解C++继承的原理、语法和应用场景,我们可以更好地应用继承这一强大的工具,提高代码的可维护性和可扩展性,从而构建出高质量的C++应用程序。原创 2024-01-07 17:01:04 · 475 阅读 · 0 评论 -
Python、C++冒泡排序
OK,今天就到这了。原创 2024-01-03 17:45:43 · 519 阅读 · 1 评论 -
基础算法-归并排序
与快速排序的分治不同,快速排序 通过一个分界点,使得小于分界点的数都在分界点左边,大于分界点的数都在分界点右边;而 归并排序 是以整个数组最中心的位置来分。原创 2024-01-02 01:00:00 · 410 阅读 · 1 评论 -
快排例题——第k个数
做道简单一点的题巩固一下与上一个整体相似,通过快速排序将长度为n的整数数列变为从小到大的有序数组,在拿出其中第k个数。给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。输入共两行。第一行包含整数 n和k。第二行包含 n 个整数(所有整数均在 1∼1e9 范围内),表示整个数列。输出一个整数,表示数列的第 k 小数。1≤n≤1000001≤k≤n输入样例5 33 1 2 4 5输出样例3。原创 2024-01-01 00:45:00 · 530 阅读 · 1 评论 -
基础算法-快速排序
分治是指就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。很多的排序问题大多都是使用分治的思想来进行解决。原创 2023-12-31 11:54:52 · 462 阅读 · 1 评论 -
luogu题目精讲(C++):【入门1】顺序结构(1~5题)
# 题目描述编写一个能够输出 `Hello,World!` 的程序。提示:- 使用英文标点符号;` 逗号后面**没有**空格。- `H` 和 `W` 为**大写**字母。## 输入格式## 输出格式## 样例 #1### 样例输入 #1```无```### 样例输出 #1``````在这个程序中,我们使用了`iostream`库中的`cout`对象来输出文本。`原创 2023-12-25 00:15:00 · 217 阅读 · 1 评论 -
你好,C++(3)2.1 一个C++程序的自白
第2部分 与C++第一次亲密接触在浏览了C++“三分天下”的世界版图之后,便对C++有了基本的了解,算是一只脚跨入了C++世界的大门。那么,怎样将我们的另外一只脚也跨入C++世界的大门呢?是该即刻开始编写C++程序?还是……正在我们犹豫的时候,便看到前面有一个人被一群满头问号的C++初学者围在当中。我们赶紧挤进去一看,噢,原来是一个C++程序正做自我介绍呢。原创 2023-12-17 00:15:00 · 159 阅读 · 0 评论