![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
江湖骇客
这个作者很懒,什么都没留下…
展开
-
Linux文件实时同步,可实现一对多,直接下载配置使用,完胜inotify+rsync
点击下载filesync实时同步程序点击下载filesync实时同步程序使用手册filesync实时同步系统是 WnNanhui 个人研究开发Linux操作系统下文件实时同步软件,它以Linux内核作为基础,采用C++ 11编程技术,将事件扫描技术和数据传输技术加载在操作系统底层,实现了对文件系统发生的所有事件 (新增 | 删除 | 内容修改 | 属性修改 | 移入 | 移除 ) 进...原创 2019-10-19 20:23:33 · 1196 阅读 · 1 评论 -
Eratosthenes筛选求质数
说明:除了自身之外,无法被其它整数整除的数称之为质数,要求质数很简单,但如何快速的 求出质数则一直是程式设计人员与数学家努力的课题,在这边介绍一个着名的 Eratosthenes求质 数方法。解法:首先知道这个问题可以使用回圈来求解,将一个指定的数除以所有小于它的数,若可以 整除就不是质数,然而如何减少回圈的检查次数?如何求出小于N的所有质数? 首先假设要检查的数是N好了,则事实上只要检查至N...原创 2019-03-11 09:37:17 · 168 阅读 · 0 评论 -
背包问题(Knapsack Problem)
说明:假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品,假设是水果好了,水果的编号、单价与重量如下所示:0 李子 4KG NT$4500 1 苹果 5KG NT$5700 2 橘子 2KG NT$2250 3 草莓 1KG NT$1100 4 甜瓜 6KG N...原创 2019-03-04 09:47:16 · 8187 阅读 · 0 评论 -
蒙地卡罗法求PI
说明:蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的 基本原理为以乱数配合面积公式来进行解题,这种以机率来解题的方式带有赌博的意味,虽然 在精确度上有所疑虑,但其解题的思考方向却是个值得学习的方式。解法:如果随意的在正方形中投射飞标(点)好了,则这些飞标(点)有些会落于四分之一圆内,假 设所投射的飞标(点)有n点,在圆内的飞标(点)有c点,则依比例来算,就会得到上...原创 2019-03-04 09:47:50 · 199 阅读 · 0 评论 -
Eratosthenes 筛选求质数
说明:除了自身之外,无法被其它整数整除的数称之为质数,要求质数很简单,但如何快速的 求出质数则一直是程式设计人员与数学家努力的课题,在这边介绍一个着名的 Eratosthenes求质 数方法。解法:首先知道这个问题可以使用回圈来求解,将一个指定的数除以所有小于它的数,若可以 整除就不是质数,然而如何减少回圈的检查次数?如何求出小于N的所有质数? 首先假设要检查的数是N好了,则事实上只要检查至N...原创 2019-03-04 09:47:57 · 243 阅读 · 0 评论 -
QT控件集合
#include "MyWidget.h"#include <QApplication> #include <QLabel> // disply static text, or image#include <QPushButton>#include <QLineEdit> // single line #include <...原创 2019-03-04 09:48:08 · 738 阅读 · 0 评论 -
QT坐标体系Layout
/* 应用程序抽象类 */#include <QApplication> /*窗口类*/#include <QWidget> #include <QLabel> /* 按钮 */#include <QPushButton>#include <QLineEdit> #include <QVBoxLayout&...原创 2019-03-04 09:48:30 · 537 阅读 · 0 评论 -
QT坐标体系
/* 应用程序抽象类 */#include <QApplication>/*窗口类*/#include <QWidget>/* 按钮 */#include <QPushButton>int main(int argc, char* argv[]){ QApplication app(argc, argv); /* 构造一个窗口*/...原创 2019-03-04 09:48:16 · 307 阅读 · 0 评论 -
QT编辑框控件
/* 应用程序抽象类 */#include <QApplication>/*窗口类*/#include <QWidget>#include <QCompleter>/* 编辑框 */#include <QLineEdit>int main(int argc, char* argv[]){ QApplication app(a...原创 2019-03-04 09:48:44 · 2130 阅读 · 0 评论 -
QT按钮控件
/* 应用程序抽象类 */#include <QApplication>/*窗口类*/#include <QWidget>/* 按钮 */#include <QPushButton>int main(int argc, char* argv[]){ QApplication app(argc, argv); /* 构造一个窗口*/...原创 2019-03-04 09:48:50 · 302 阅读 · 0 评论 -
蒙地卡罗法求PI
说明:蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的 基本原理为以乱数配合面积公式来进行解题,这种以机率来解题的方式带有赌博的意味,虽然 在精确度上有所疑虑,但其解题的思考方向却是个值得学习的方式。解法:如果随意的在正方形中投射飞标(点)好了,则这些飞标(点)有些会落于四分之一圆内,假 设所投射的飞标(点)有n点,在圆内的飞标(点)有c点,则依比例来算,就会得到上...原创 2019-03-11 09:37:09 · 142 阅读 · 0 评论 -
背包问题(Knapsack Problem)
说明:假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品,假设是水果好了,水果的编号、单价与重量如下所示:0 李子 4KG NT$4500 1 苹果 5KG NT$5700 2 橘子 2KG NT$2250 3 草莓 1KG NT$1100 4 甜瓜 6KG N...原创 2019-03-11 09:37:00 · 250 阅读 · 0 评论 -
linux下的C语言开发
在很多人的眼里,C语言和linux常常是分不开的。这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品。当然,linux操作系统本身对C语言的支持也是相当到位的。作为一个真正的程序员来说,如果没有在linux下面用C语言编写过完整的程序,那么只能说他对C语言本身的理解还相关肤浅,对系统本身的认识也不够到位。作为程序员来说,linux系统为我们提供了很多理想的环境,这其中包...原创 2019-03-06 10:32:01 · 25321 阅读 · 3 评论 -
消灭方块
消灭方块- 源码文件 - 点击下载说明:本程序使用DEV即可编译效果截图:原创 2019-03-06 10:32:09 · 345 阅读 · 0 评论 -
八皇后问题
说明:西洋棋中的皇后可以直线前进,吃掉遇到的所有棋子,如果棋盘上有八个皇后,则这八个皇后如何相安无事的放置在棋盘上,1970年与1971年, E.W.Dijkstra与N.Wirth曾经用这个问题来讲解程式设计之技巧。解法:关于棋盘的问题,都可以用递回求解,然而如何减少递回的次数?在八个皇后的问题中,不必要所有的格子都检查过,例如若某列检查过,该该列的其它格子就不用再检查了,这个方法称为分支修剪...原创 2019-03-11 09:35:51 · 96 阅读 · 0 评论 -
河内之塔
说明:河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒...原创 2019-03-11 09:36:08 · 108 阅读 · 0 评论 -
骑士走棋盘
说明:骑士旅游(Knighttour)在十八世纪初倍受数学家与拼图迷的注意,它什么时候被提出已不可考,骑士的走法为西洋棋的走法,骑士可以由任一个位置出发,它要如何走完[所有的位置?解法:骑士的走法,基本上可以使用递回来解决,但是纯綷的递回在维度大时相当没有效率,一个聪明的解法由J.C.Warnsdorff在1823年提出,简单的说,先将最难的位置走完,接下来的路就宽广了,骑士所要走的下一步,「为下...原创 2019-03-11 09:36:17 · 160 阅读 · 0 评论 -
八枚银币
说明:现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重。解法:单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的回圈比较来求解,我们可以使用决策树(decision tree),使用分析与树状图来协助求解。一个简单 的状况是这样的,我们比较a+b+...原创 2019-03-11 09:36:28 · 204 阅读 · 0 评论 -
生命游戏
说明:生命游戏(game of life)为1970年由英国数学家J. H. Conway所提出,某一细胞的邻居包括上、下、左、右、左上、左下、右上与右下相邻之细胞,游戏规则如下:孤单死亡:如果细胞的邻居小于一个,则该细胞在下一次状态将死亡。拥挤死亡:如果细胞的邻居在四个以上,则该细胞在下一次状态将死亡。稳定:如果细胞的邻居为二个或三个,则下一次状态为稳定存活。复活:如果某位置原无...原创 2019-03-11 09:36:37 · 239 阅读 · 0 评论 -
字串核对
说明:今日的一些高阶程式语言对于字串的处理支援越来越强大(例如Java、Perl等),不过字串搜寻本身仍是个值得探讨的课题,在这边以Boyer- Moore法来说明如何进行字串说明,这个方法快且原理简洁易懂。解法:字串搜寻本身不难,使用暴力法也可以求解,但如何快速搜寻字串就不简单了,传统的字串搜寻是从关键字与字串的开头开始比对,例如 Knuth-Morris-Pratt 演算法 字串搜寻,...原创 2019-03-11 09:36:45 · 215 阅读 · 0 评论 -
双色、三色河内塔
说明:双色河内塔与三色河内塔是由之前所介绍过的河内塔规则衍生而来,双色河内塔的目的是将下图左上的圆环位置经移动成为右下的圆环位置:而三色河内塔则是将下图左上的圆环经移动成为右上的圆环:解法:无论是双色河内塔或是三色河内塔,其解法观念与之前介绍过的河内塔是类似的,同样也是使用递回来解,不过这次递回解法的目的不同,我们先来看只有两个盘的情况,这很简单,只要将第一柱的黄色移动至第二柱,而接下来第...原创 2019-03-11 09:36:51 · 327 阅读 · 0 评论 -
三道c语言经典面试题分享与解析
题一,sizeof 和 strlen 有何区别?sizeof 是一个操作符,strlen 是库函数。sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\0‘的字符串作参数。编译器在编译时就计算出了sizeof 的结果。而 strlen 函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。数...原创 2019-03-04 09:48:59 · 260 阅读 · 0 评论 -
C++对象对new,delete拦截实现内存监视
object_memory_monitoring - 源码文件 - 点击下载C或C语言和其他语言不同,需要自己管理内存,对不需要的内存要及时释放,否则就会导致内存泄露,导致内存不足让程序崩溃。在C程序员中,很容易导致内存忘记释放,特别是在程序出现异常的情况下。在对象中我们可以对new,delete进行重写,实现内存监视#include <iostream>#include...原创 2019-03-12 14:48:43 · 715 阅读 · 0 评论 -
C++中string类的的实现
MyString - 源码文件 - 点击下载一:回顾(1)c++中的string类是在面试中和笔试中经常考的题目; 工程代码免费下载 string类的自行实现(2)c++中的string类和fstream类合起来是处理外部数据的利器;(3)string类经常用到find find_first_of find_first_not_of find_last_of find_last_not_...原创 2019-03-04 09:49:07 · 276 阅读 · 0 评论 -
洗扑克牌(乱数排列)
说明:洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1~N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作而已。解法:初学者通常会直接想到,随机产生1~N的乱数并将之存入阵列中,后来产生的乱数存入阵列前必须先检查阵列中是否已有重复的数字,如果有这个数就不存入,再重新产生下一个数,运气不好的话,重复的次数就会很多,程式的执行速度就很慢了,这不是一个好方法。以1~52的乱数排列为例好了...原创 2019-03-01 11:20:50 · 277 阅读 · 0 评论 -
后序式的运算
说明:将中序式转换为后序式的好处是,不用处理运算子先后顺序问题,只要依序由运算式由前往后读取即可。解法:运算时由后序式的前方开始读取,遇到运算元先存入堆叠,如果遇到运算子,则由堆叠中取出两个运算元进行对应的运算,然后将结果存回堆叠,如果运算式读取完毕,那么堆叠顶的值就是答案了,例如我们计算12+34+*这个运算式(也就是(1+2)*(3+4)): 读取 堆叠 ...原创 2019-03-01 11:18:43 · 285 阅读 · 0 评论 -
前序式的运算
说明:平常所使用的运算式,主要是将运算元放在运算子的两旁,例如a+b/d这样的式子,这称之为中序(Infix)表示式,对于人类来说,这样的式子很容易理解,但由于电脑执行指令时是有顺序的,遇到中序表示式时,无法直接进行运算,而必须进一步判断运算的先后顺序,所以必须将中序表示式转换为另一种表示方法。可以将中序表示式转换为后序(Postfix)表示式,后序表示式又称之为逆向波兰表示式(Reversepo...原创 2019-03-01 11:17:31 · 332 阅读 · 0 评论 -
最大访客数
说明:现将举行一个餐会,让访客事先填写到达时间与离开时间,为了掌握座位的数目,必须先估计 不同时间的最大访客数。解法:这个题目看似有些复杂,其实相当简单,单就计算访客数这个目的,同时考虑同一访客的来访 时间与离开时间,反而会使程式变得复杂;只要将来访时间与离开时间分开处理就可以了,假 设访客 i 的来访时间为x[i],而离开时间为y[i]。 在资料输入完毕之后,将x[i]与y[i]分别进...原创 2019-03-01 11:14:41 · 363 阅读 · 0 评论 -
阿姆斯壮数
说明:在三位的整数中,例如153可以满足1 3 + 53 + 33 = 153,这样的数称之为Armstrong数,试写出一 程式找出所有的三位数Armstrong数。解法 :Armstrong数的寻找,其实就是在问如何将一个数字分解为个位数、十位数、百位数......,这只 要使用除法与余数运算就可以了,例如输入 input为abc,则:a = input / 100b = (...原创 2019-03-01 11:13:17 · 376 阅读 · 0 评论 -
完美数
说明:如果有一数n,其真因数(Proper factor)的总和等于n,则称之为完美数(Perfect Number), 例如以下几个数都是完美数:6 = 1 + 2 + 328 = 1 + 2 + 4 + 7 + 14496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248程式基本上不难,第一眼看到时会想到使用回圈求出所有真因数,再进一步求因数...原创 2019-03-01 11:11:33 · 4664 阅读 · 0 评论 -
最大公因数、最小公倍数、因式分解
说明:最大公因数使用辗转相除法来求,最小公倍数则由这个公式来求: GCD * LCM = 两数乘积解法:最大公因数可以使用递回与非递回求解,因式分解基本上就是使用小于输入数的数值当 作除数,去除以输入数值,如果可以整除就视为因数,要比较快的解法就是求出小于该数的所 有质数,并试试看是不是可以整除,求质数的问题是另一个课题,请参考 Eratosthenes 筛选求 质数。最大公因数...原创 2019-03-01 11:10:04 · 922 阅读 · 0 评论 -
长 PI
说明:圆周率后的小数位数是无止境的,如何使用电脑来计算这无止境的小数是一些数学家与 程式设计师所感兴趣的,在这边介绍一个公式配合 大数运算,可以计算指定位数的圆周率。解法:首先介绍J.Marchin的圆周率公式:PI = [16/5 - 16 / (3*53 ) + 16 / (5*55 ) - 16 / (7*57 ) + ......] - [4/239 - 4/(3*2393 )...原创 2019-03-01 11:06:28 · 188 阅读 · 0 评论 -
超长整数运算(大数运算)
说明:基于记忆体的有效运用,程式语言中规定了各种不同的资料型态,也因此变数所可以表 达的最大整数受到限制,例如123456789123456789这样的 整数就不可能储存在long变数中(例 如C/C++等),我们称这为long数,这边翻为超长整数(避免与资料型态的长整数翻译混淆),或 俗称大数运算。解法:一个变数无法表示超长整数,则就使用多个变数,当然这使用阵列最为方便,假设程式 语言的...原创 2019-03-01 10:24:08 · 1359 阅读 · 0 评论 -
小游戏1024纯C语言
俄罗斯方块- 源码文件 - 点击下载说明:本程序使用DEV即可编译效果截图:1024.c#include <stdio.h>#include <windows.h>#include <time.h>#include "order_b_1.h"#include "help_fun_1.h"#include "order_fun_1.h"..原创 2017-10-23 18:04:08 · 3043 阅读 · 0 评论 -
C语言的编译过程
编译: 编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 流程:C源程序头文件 --> 预编译处理(cpp) --> 编译程序本身 --> 优化程序 --> 汇编程序 --> 链接程序 -–> 可执行文件 1. 编译预处理...原创 2019-03-01 11:21:42 · 7763 阅读 · 2 评论 -
概念异常和Bug异常和BUG对比:C语言异常处理方法
程序中不可避免的会发生异常。而异常是在开发阶段就可以预见的运行时问题。下面我们来分析一下C语言中异常处理的方式!概念程序在运行过程中可能产生异常。异常是程序运行时可预料的执行分支异常和Bug异常是程序运行时可预料的执行分支Bug是程序中的错误,是不被预期的运行方式。异常和BUG的对比:异常:1.运行时产生除0的情况2.需要打开的外部文...原创 2019-03-14 14:24:12 · 792 阅读 · 0 评论 -
C++运算符重载
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如:class complex{public: complex(double r=0.0,double I=0.0) { real=r; imag=I; } void display();private: doub...原创 2019-03-12 14:48:53 · 650 阅读 · 0 评论 -
C++左值、右值、右值引用详解
左值、右值最简单的理解:可以对表达式取地址就是左值,否则就是右值。在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a = b+c, a 就是左值,其有变量名为a,通过&a可以获取该变量的地址;表达式b+c、函数int func()的返...原创 2019-03-12 14:49:04 · 332 阅读 · 0 评论 -
VC编译器与GCC编译器的区别
首先,所谓语法区别是针对程序设计语言而言的,这里首先你要分清楚它们之间的区别。Gcc:它是一款开源的C语言编译器,原来只能在Linux系统上使用,后来移植到了Windows操作系统上,以此为基础的编译环境典型的又MinGW。它不是编程语言,所以没有语法这一说。G++:和GCC一个性质,只不过它是针对C++语言的。VC:它有两种解释:1.即VC本身,是微软公司推出的一款C++编译器,Visu...原创 2019-03-12 14:49:12 · 14442 阅读 · 4 评论 -
拷贝构造函数
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a = 100; int b = a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include <iostream> using namespace std;...原创 2019-03-12 14:49:20 · 94 阅读 · 0 评论