CPP
文章平均质量分 71
C++
Hann Yang
本人大叔一枚,自1992年接触电脑,30余年的业余电脑发烧爱好者,优快云认证博客专家、阿里云社区“乘风者计划”专家博主,2023年度优快云博客之星Top15。自某不知名财校毕业后进入国有大行工作至今,先后任职于某分行信息科技部、电子银行部、金融科技部等部门。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言中大小写字母的转化
本文介绍了在C语言中进行大小写字母转换的方法,包括使用toupper()和tolower()函数。原创 2024-02-23 16:38:43 · 2056 阅读 · 1 评论 -
力扣 C++|一题多解之动态规划专题(2)
Dynamic Programming简写为 DP,是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。原创 2023-08-03 20:40:48 · 1309 阅读 · 35 评论 -
力扣 C++|一题多解之动态规划专题(1)
Dynamic Programming简写为 DP,是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。原创 2023-08-03 20:41:21 · 2576 阅读 · 62 评论 -
力扣C++|一题多解之数学题专场(2)
50. Pow(x, n) 60. 排列序列 66. 加一 67. 二进制求和 69. x 的平方根原创 2023-07-22 06:52:00 · 3279 阅读 · 78 评论 -
力扣C++|一题多解之数学题专场(1)
7. 整数反转 9. 回文数 12. 整数转罗马数字 13. 罗马数字转整数 29. 两数相除原创 2023-07-14 20:35:48 · 1988 阅读 · 77 评论 -
浅谈Golang等多种语言转数组成字符串
对Java普通数组的转化也非常方便,有现成的Arrays.toString()函数,二维及以上数组用deepToString(),也不需要循环遍历就能实现。对python来说,可以直接使用repr(), str(), print()来处理列表,也不用管列表元素是什么数据类型,非常省心。原创 2023-04-29 00:42:55 · 3536 阅读 · 58 评论 -
C++实现的二叉树创建和遍历,超入门邻家小女也懂了
所有层的节点都达到最大数量,叶子除外的所有节点都有两个子节点,所有叶子都在最底一层(k)且数目为2^(k - 1)。如果删除最底一层的所有叶子它就是满二叉树,即除了最后一层,每层节点都达到最大数量 ,即有深度k的个节点数在左闭右开【2^(k-1)+1,2^k-1】区间内。1. 具有N个节点的完全二叉树的深度为[log2 N]+1,其中[x]为高斯函数,截尾取整。(3)若在任意一棵二叉树中,有n0个叶子节点,有n2个度为2的节点,则必有n0=n2+1。(1)如果i=1,则节点i是二叉树的根,无双亲......原创 2023-03-08 21:38:57 · 9775 阅读 · 74 评论 -
C++ leetcode之排列与组合专题
排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。原创 2022-06-11 22:10:26 · 1885 阅读 · 7 评论 -
C++ 代码整洁之道
整洁的代码在团队中无疑是很受欢迎的,可以高效的被其它成员理解和维护,本文参考《C++代码整洁之道》和《Google C++编码规范》,结合自己的一些想法整理如下:C++本身作为面向对象语言,首先介绍下面向对象一般涉及到的开发原则。一、面向对象开发原则1、依赖倒置原则:针对接口编程,依赖于抽象而不依赖于具体,抽象(稳定)不应依赖于实现细节(变化),实现细节应该依赖于抽象,因为稳定态如果依赖于变化态则会变成不稳定态。2、开放封闭原则:对扩展开放,对修改关闭,业务需求是不...转载 2021-03-11 13:07:44 · 2535 阅读 · 2 评论 -
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
为表达超出long long型范围的超大正整数,数字都用字符串来表示,以下函数完成“字符串数”的相加、数乘和相乘,为计算大斐波数作准备。string strAdd(string a, string b) //两个“字串正整数”相加string strMulI(string a, int b) //“字串正整数”的倍数(n=0~9)string strMul(string a, string b) //两个“字串正整数”相乘第三个函数strMul()需要调用前两个函数,测试代码如下:原创 2021-03-09 00:37:48 · 3562 阅读 · 0 评论 -
C++ 只用一行代码就能计算斐波那契数列!
通常都用公式一来计算斐波那契数列的,其实还有一个更牛叉的内比公式表达的通项可以用。只要一行代码就能计算斐波那契数列!预定义三个宏常量,使代码更简洁些:#include <iostream>#include <iomanip>#include <cmath>using namespace std;#define M_SQRT5 2.2360679774997896964091736687313#define M_1pSQRT5_2.原创 2021-03-06 15:36:25 · 3970 阅读 · 0 评论 -
C++ 计算斐波那契数列第100万项的精确整数值
上一篇《各整型数据能计算出斐波那契数列的最大项数是几?》答案是用unsigned long long型计算,最大只能输出第93项,再往后一项就溢出了。要计算几十万的值,只能用字符串来帮忙了。先来计算斐波那契数列第100,000项的值:25974069347221724166155034021275915414880485386517696584724770703952534543511273686265556772836716744754637587223074432111638399473875.原创 2021-03-06 03:16:28 · 4350 阅读 · 3 评论 -
C++ 各种无符号整型能够在溢出之前计算出斐波那契数列的最大项数是几?答案是24、47、93
斐波那契数列 (Fibonacci)又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34……在数学上,斐波那契数列以如下被以递推的方法定义:F(1) = 1,F(2) = 1F(n) = F(n - 1) + F(n - 2) (n ≥ 3,n ∈ N*)简单来讲就是:数列中第3项开始,任一项的值都等于它前两项之和。用数列定义,可以计算出unsign.原创 2021-03-05 22:21:04 · 2765 阅读 · 0 评论 -
C++ 类的定义和实现 class Color_and_Coordinate
C++类的定义 C++中使用关键字 class 来定义类, 其基本形式如下:class 类名{ public: //公共的行为或属性 protected: //行为或属性 private: //公共的行为或属性};说明: ①. 类名 需要遵循一般的命名规则; ②. public 与 private 为属性/方法限制的关键字, private 表示该部分内容是私密的, 不能被外部所访问或调用, 只能被本...原创 2021-03-05 14:56:04 · 2871 阅读 · 0 评论 -
C++ 用枚举类型替代宏定义连续的常量
用define定义16种颜色常量要写16行代码,改成枚举类型后只要一两行就搞定:#define cBlack 0#define cNavy 1#define cGreen 2#define cTeal 3#define cMaroon4#define cPurple 5#define cOlive 6#define cSliver 7#define cGray ...原创 2021-03-05 09:53:57 · 2694 阅读 · 1 评论 -
C++ 几行代码就能重载操作符模拟 cout<<123<<endl;
#include <iostream>const char endl = '\n';class myOutText{public: myOutText& operator<<(auto s){std::cout << s; /*return *this;*/}};myOutText cout;int main(){ double a = 303, b = 20.0; cout << a+b <<.原创 2021-03-04 22:29:51 · 2409 阅读 · 1 评论 -
C++ 重载操作符<<实现cout定位输出以及设置颜色:cout<<Goto(x,y)<<setC(color)<<123<<cr;
调用<windows.h>库中几个最常用的WINAPI函数,重载了操作符<<,使得cout可以定位输出以及设置颜色。用法: cout<<Goto(x,y)<<setC(foreColor,bgColor)<<123<<cr;Goto(x,y) 定位到坐标(x,y) ,控制台窗口的左上角第一格坐标为(0,0);Goto(x) 定位坐标到本行的 x ,即默认y为当前行;Goto() 回到本行行首,即回车不换行。s...原创 2021-03-03 11:00:38 · 4219 阅读 · 1 评论 -
C++ 是否存在一个在main()主函数之前就执行的函数? 这个可以有!
一般地,大家都知道的常规:C/C++程序是从main()函数开始执行的main()函数有参数和返回值main()函数是操作系统调用的函数操作系统总是将main()函数作为应用程序的开始操作系统将main()函数的返回值作为程序的退出状态那究竟有否能在main()主函数之前执行的函数呢?答案:有!有些编译器支持关键字 attribute,能指定在 main 之前 (constructor) 、main 之后 (destructor) 分别执行一个函数。但不是所有的编译器都支持...原创 2021-03-02 11:00:38 · 2742 阅读 · 0 评论 -
C++ 重载操作符 <<实现模拟输出语句: cout << endl;
#include <iostream>#define Stream std::basic_ostream<T1, T2>&template<typename T1, typename T2>Stream CRLF(Stream __os){ putchar('\n'); return __os.flush(); //清缓存 }int main(void){ std::cout << "第一行" << C...原创 2021-03-01 22:27:34 · 5107 阅读 · 0 评论 -
用 typeid 操作符 做一个C++数据类型大全
typeid 操作符用于判断表达式的类型,使用时要包括<typeinfo>头文件。它是一个操作符而不是函数,像sizeof一样也是操作符不是函数。成员函数.name()返回的是c-style字串类型,是数据类型的“名称”,或者理解为是一个“缩写”形式。具体值由编译器的实现所决定,可能编译器不同返回值也不同(标准只要求实现为每个类型返回唯一的字符串)。用法: typeid(变量、或数据类型).name() , 以下写法都被允许: int num=123; ...原创 2021-03-01 16:11:31 · 3693 阅读 · 0 评论 -
C++ 多种取整函数的使用和区别: ceil() floor() round() trunc() rint() nearbyint()
ceil()右向取整:数轴上右边最靠近的整数,“天花板”向大的方向取值floor()左向取整:数轴上左边最靠近的整数,“地板”向小的方向取值round() 四舍五入:先不管正负,四舍五入后只留下整数部分round(x) = floor(x+0.5)trunc()零向取整:先不管正负,直接舍掉小数部分只留下整数部分,向原点0的方向取值rint() nearbyint() : 四种方法任选其一,由fegetround()配合设置见上表中的例程例程一:#include &...原创 2021-02-28 13:06:18 · 5218 阅读 · 0 评论 -
C++ 直接从<cmath>中寻找库函数——数学标准库函数大全
如题,直接从<cmath>扒出以下三段内容:using ::acos;using ::asin;using ::atan;using ::atan2;using ::ceil;using ::cos;using ::cosh;using ::exp;using ::fabs;using ::floor;using ::fmod;using ::frexp;using ::ldexp;using ::log;using ::log10;using ::modf;原创 2021-02-27 16:55:20 · 3775 阅读 · 0 评论 -
C++ 你会使用cmath库里的宏常量吗?(π、e、ln2、√2、(2/√π) 等等)
前面在写定积分函数时,自定义了2个常量:圆周率 π和 自然常数 e#define E 2.71828182845904523536#define Pi 3.14159265358979323846其实<cmath>或<math.h>库里已经“隐藏”着这些常量了,说它“隐藏”的原因是因为仅包括了库还能直接引用,要在"#include <cmath>"之前加一行:#define _USE_MATH_DEFINES注意:必须在<...原创 2021-02-27 10:49:24 · 27459 阅读 · 1 评论 -
C++ 用自定义函数验证高等数学的定积分例题
#include <iostream>#include <cmath>using namespace std; #define N 100000#define E 2.7182818#define Pi 3.1415926 class IntegralFunc {public: double fun1(double x){ return (sin(x)*tan(x)*tan(x))/(3+cos(x))...原创 2021-02-26 08:34:33 · 2989 阅读 · 0 评论 -
C++ 函数怎样作形参?实例:微分法求定积分
通常大家都用微分法来求定积分的,但切割图形(微分)的方法也是有细微区别的。网上流行以下代码:#include <iostream>#include <cmath>using namespace std;#define N 10000#define Pi 3.1415926double func(double x){ return sin(x);} double integral(double a, double b){ double r, d = (b原创 2021-02-25 00:24:13 · 3507 阅读 · 0 评论 -
C++ Windows编程中WPARAM等数据类型在32位和64位系统中的差异
问题发现在以下这段代码中,在32位windows7上用DEV-C++编译,无错无警告通过;后来在64位Windows7中编译却出错。#include <windows.h>#include <string>using namespace std;LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { static int i=0; static HWND bH原创 2021-02-23 19:16:46 · 3181 阅读 · 0 评论 -
非可视化编程的windows窗口 C++ 代码设计:附例程并多多知识点
一个在Dev-C++中写的非可视化编程的windows窗口计算器简易版,其运行效果如下图:所有框架和单目运算已经做好,+-*/暂未完成,代码还有改进空间......#include <iostream>#include <iomanip>#include <sstream>#include <string>#include <cmath>#include <windows.h>using namespace.原创 2021-02-21 23:45:13 · 4603 阅读 · 2 评论 -
C++ <algorithm>Sort()函数秒杀任何常用排序算法
算法(Algorithm)代表着用系统的方法描述解决问题的策略机制,可以通过一定规范的输入,在有限时间内获得所需要的输出。一个算法的好坏是通过时间复杂度与空间复杂度来衡量的。就是代码需要的时间和内存,也就你时间成本和空间成本。其实这个一个动态的调整,到一定程度,往往就是用空间去换取时间,或者去时间去换取空间(dp其实就是在用空间去换取时间)。当然优秀的代码就是很优秀,排序也是这样,他们的目标都是把一堆数字进行排序。常见时间复杂度的“大O表示法”描述有以下几种:时间复杂度...原创 2021-02-21 14:13:50 · 3341 阅读 · 0 评论 -
C++ Windows窗口程序:子窗口控件之按钮类button
Windows窗口程序设计中,按钮、文本编辑框等控件都作为一个子窗口在WM_CREATE事件中创建的。其中按钮类button有多种类型和风格,常见的单选钮、复选钮、分组框也在此类中,见下表:子窗口控件:按钮类button按钮类型,可以是按钮风格与窗口风格的组合窗口风格:WS_CHILD 子窗口,必须有WS_VISIBLE 窗口可见,一般都有WS_DISABLED 禁用窗口,创建初始状态为灰色不可用的按钮时使用WS_TABST原创 2021-02-21 00:10:39 · 24009 阅读 · 1 评论 -
C++ 用DEV-C++建一个Windows窗口程序带文本框和命令按钮
在Dev-C++ 5.11上创建并正常运行,操作系统32位、64位Win7均可。首先在文件菜单里新建项目,选择Windows Application,命名完成后得到程序框架。最后在代码中添加上控件和对应的事件即可。原创 2021-02-19 21:59:51 · 26970 阅读 · 9 评论 -
C++ 控制台窗口中MessageBox() 的用法
例程:#include <iostream>#include <windows.h> using namespace std;int main(){ for(int i=1;i<=2;i++){ i = MessageBox(NULL, "输出内容?", "对话框标题", MB_OKCANCEL); if(i==IDOK) cout<<"IDOK = "<<i<<endl; if(i==IDCANCEL) c.原创 2021-02-19 16:38:35 · 4520 阅读 · 3 评论 -
C++ 抓取和批量下载网站上的图片或文件
随便找个图片网页https://esports.zol.com.cn/slide/688/6885385_1.html 来练手抓取和下载图片。首先要分析html代码,看下载目标的链接命名是否有规律,有规律就用regex抓取地址,再用wininet中的函数下载;然后再找出下一图集的链接,反复循环就能遍历网站的图片(或其它文件)。#include <iostream>#include <iomanip>#include <windows.h>#include &l原创 2021-02-19 10:36:25 · 4575 阅读 · 3 评论 -
C++ 使用HttpRequest获取网页及UTF8转GB码
#include <iostream>#include <windows.h>#include <wininet.h>using namespace std;string HttpRequest(string strUrl, string strMethod="GET", string strPostData="", int nPostDataLen=0, short sPort=80){ int pos; BOOL bRet; char *lp...原创 2021-02-18 00:03:55 · 3218 阅读 · 1 评论 -
C++ 从cstring函数向string类成员函数迁移
cstring库函数用法实例strcpy功 能:拷贝一个字符串到另一个用 法:char *strcpy(char *dest, char *source);程序例: 1 2 3 4 5 6 7 8 9 10 11 12 #include <iostream> #include <cstring> using namespace std;原创 2021-02-11 00:11:37 · 3140 阅读 · 0 评论 -
C++ 递归和非递归实现字符串反转 char *reverse(char *s)
C++ 递归和非递归实现字符串反转函数 char *reverse(char *s)原创 2021-02-09 23:31:35 · 3602 阅读 · 0 评论 -
C++ Beep()演奏简谱的改进以及实现背景音乐
看到BEEP就会想起上世纪90年代初在8086的机器或者稍后的286、386机器上用解释型Basic编简谱玩的情景,这便是那个声霸卡还没上市的年代里,几乎是人们在PC上唯一可编的声音了。原创 2021-02-04 23:59:53 · 8429 阅读 · 2 评论 -
C++ 用GetAsyncKeyState() 获取所有按键码
#include <iostream>#include <windows.h>using namespace std;void gotoXY(short x, short y){ COORD position = {x, y}; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsole, position);}int main().原创 2021-02-04 00:00:19 · 4744 阅读 · 0 评论 -
C++ 设置控制台文本属性画一个DOS时代的字符窗口
<windows.h>库函数:SetConsoleCursorPosition() 设置控制台光标位置;SetConsoleTextAttribute() 设置控制台文本属性,主要用来设置颜色。原创 2021-02-01 21:22:42 · 2575 阅读 · 2 评论 -
C++11 用next_permutation算法计算排列组合数
自定义一个函数size_t permuteVect(vector<string>&m, string t, size_t i=0, bool combine=false),功能:对字串t任取其中的i个字符进行排列或组合,结果存入vector,返回值即排列组合数。对于全排列就是用next_permutation()做do-while循环的结果,对全排列函数的执行时间做了一下测试: 阶乘数量级 排列耗时 8!= 40320 ...原创 2021-01-26 00:08:32 · 3235 阅读 · 1 评论 -
C++ 用正则regex和容器vector计算字符串算式的值
要求:科学记数法必须是(de±i,e后不能省略+或-)运算符必须是(+、-、*、/、^,5种) 暂未处理有括号的运算式;字符串也不能有运算符和数字(包括 . 和e)之外的字符步骤:先用正则表达式regex把字符串算式拆分成数和运算符,依次存放进容器vector, 然后按运算符优先级别先后计算出中间结果,最后计算代数和。代码如下:#include <iostream>#include <iomanip>#include <string>#i..原创 2021-01-22 16:56:11 · 2318 阅读 · 0 评论
分享