自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QQ音乐听歌升级漏洞-用C实现接口

漏洞怎么发现的有一次,正在使用抓包工具Wireshark,换了收歌,看到Wireshark多了几条记录,看到域名i.y.qq.com,最后发现是QQ音乐的。出于好奇,我是想研究下我切歌的时候,QQ音乐到底是发了哪些数据包,没想到发现了QQ音乐发送听歌时间的一个漏洞分析协议因为用Wireshark可以看到,QQ音乐发送数据的时候采用的是HTTP协议,这里为了说明方便,用的是Fiddler2分析协议

2016-04-05 13:48:19 3306 3

原创 【内存泄露/C++】基于重载new运算符的内存泄露检测工具

···检测内存泄露的方法有很多,这里使用的是重载系统的new运算符和delete运算符。从而达到,在new的时候记录申请内存的大小,和代码所属文件和行号,后两个信息主要是为了调试。在程序结束之前,访问保存的这些信息,判断内存是否泄漏。 ···这里使用的存储结构是哈希表,结构如下:typedef struct MemNode//记录new时保存的信息{ int size; char

2015-09-02 10:20:12 903

原创 [Boost]用asio编写简单的socket通信程序

boost/asio库中封装了很多关于scoket的函数,当然,asio库还包含很多底层的库。我们可以用socket编写一个基于UDP协议的黑框通讯程序。要想使用asio里面的函数,大多都需要先创建一个io_service对象,然后通过这个serveice来构造不同的对象,所以第一步,我们得创建两个对象: boost::asio::io_service io_service; b

2015-08-27 10:54:53 6880

原创 一个循环实现冒泡法排序(并没有什么卵用)

冒泡法时间复杂度为O(n^2) 这个是改不了的 不可能因为用一个循环实现,就变成了O(N)。。。 所以,并没有什么卵用,只是一种写代码的方式而已。。。//Swap 用宏实现#define Swap(a,b,c) ((c)=(a),(a)=(b),(b)=(c))//第一种方式,,,最简单的void BubbleSortOneLoop(int ar[], int n){ int i

2015-06-17 23:16:21 1730

原创 KMP算法解决字符串出现次数

比如主串为:”1001110110” 子串为:”11“ 则出现位置分别为:3 4 7//KMP算法 2015.6.7#include<iostream>#include<stdlib.h>using namespace std;int main(){ char *s = "1001110110"; char *p = "11"; int ar[20] = {

2015-06-15 22:11:02 2850 1

原创 [编程题]Be Unique (赌徒下注问题)

Being unique is so important to people on Mars that even their lottery is designed in a unique way. The rule of winning is simple: one bets on a number chosen from [1, 104 ]. The first one who bets on

2015-06-15 22:04:05 1191

原创 [编程题]Shuffling Machine (洗牌程序)

Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid “inside jobs” where employees collaborate with gamblers

2015-06-15 22:02:33 3103

原创 [编程题]数字分类

给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。 输入描述:每个输入包含1个测试用例。每个测试用例先给出一个不

2015-06-15 21:58:02 1091

原创 矩阵的排序

在一个m*n矩阵中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,按从小到大的顺序打印这个矩阵到一个一维数组中。如图,则应打印出1,2,2,4,4,6,7,8,8,9,9,10,11,12,13,15.思路:如果把它想成 合并m个大小为n的数组,那么思路将会很简单。 但是,矩阵的m和n为随机值,所以并不能想很简单的那种合并。 假如我们定义一个大小为m

2015-05-05 19:10:42 11812

原创 单链表的sort以及resver的实现(改变链表指向而非数值)

单链表的sort排序采用冒泡法,不是单纯的改变链表结点的值,而是通过改变物理结构上的指针域指向实现。 void sort(List *list){ if(list->size <=1)` //基本条件 return ; Node *p,*q,*pa,*temp; for(int i=0;i<list->size-1;i++)//控制总次数 {

2015-05-04 12:58:37 1734

原创 【算法】最长回文子串的判断

描述:比如:“12212321”的最长回文子串为“12321”长度为5int LongestPalindrome(string s){ int max=0; if (s.length() >= 1) { for(int i=0;i<s.length();i++) //从左向右依次遍历 { int l; //如果这个子串长度为质数 for(l=

2015-04-26 13:33:10 735

原创 【字符串】字符串包含问题的最优解

题目描述 给定两个分别由字母组成的字符串A和字符串B,字符串B的长度比字符串A短。请问,如何最快地判断字符串B中所有字母是否都在字符串A里? 为了简单起见,我们规定输入的字符串只包含大写英文字母,请实现函数bool StringContains(string &A, string &B)比如,如果是下面两个字符串: String 1:ABCD String 2:BAD

2015-04-26 13:27:23 1049

原创 【字符串】大数的乘法(包括浮点数)

一.大数乘法我们知道,要运算两个数的乘法,c、c++语言里有专门的运算符*。但是当两个数超过一定的范围时,用普通的运算符会产生溢出,并不能得到正确的结果。如何进行运算呢?      首先,要想保存一个大数,用正常的整形或浮点类型是不够的。所以我们可以采用字符串的形式对大数进行保存,然后编写算法,模拟乘法运算过程即可。1.第一个问题:两个数字运算结果至多用多少位的字符串保存呢?两个4

2015-04-22 11:21:23 6315

原创 【算法】字符串左移函数的O(n)解法

例如,字符串 abcdef ,若要让def翻转到abc的前头,只要按照下述3个步骤操作即可: 首先将原字符串分为两个部分,即X:abc,Y:def; 将X反转,X->X^T,即得:abc->cba;将Y反转,Y->Y^T,即得:def->fed。 反转上述步骤得到的结果字符串X^TY^T,即反转字符串cbafed的两部分(cba和fed)给予反转,cbafed得到defabc,形式化表示为

2015-04-13 12:55:01 1118

原创 【算法】合并排序

#include #include void mergePass(int *ar,int *pr,int s,int size);void merge(int *ar,int *pr,int l,int m,int r);void mergeSort(int *ar,int size) // 合并排序{ int *pr=(int *)malloc(sizeof(int)*

2015-04-11 20:11:56 809

原创 【剑指offer】替换空格

字符串:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy代码实现:#includechar *replaceSpace(char *str){ char ar[100]={0}; char *pstr=str; char *par=ar; while

2015-04-11 11:52:45 540

原创 【剑指offer】变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。与跳台阶不同的地方在于,加入n=5,那么这次 青蛙可以一次性跳3层,或4层,或5层。代码实现:class Solution {public: int jumpFloorII(int number) { int sum=0;

2015-04-11 11:50:40 601

原创 【剑指offer】跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。代码实现:class Solution {public: int jumpFloor(int number) { if(number<=1) return 1; else return jumpF

2015-04-11 11:47:10 535

原创 【递归】棋盘覆盖

问题描述:在一个2^k*2^k 的方格组成的棋盘中,有一个方格与其他方格不同,称为特殊方格。现在邀请4中不同的L型骨牌 覆盖给定的棋盘除特殊方格外的所有方格。例如:这是一个K=2时的棋盘,特殊点坐标为(0,1)。四中L型骨牌如图:程序代码:#include #define KEY 8 //棋盘的阶数int ar[KEY][KEY]=

2015-04-11 11:43:16 745

原创 【C语言】函数参数中的const修饰符

通常,字符串操作函数原型中,都会在形参前面加上const修饰符,表示此指针不能用于修改字符串的值  比如:char *strcpy(char *strDest, const char *strSrc) 但是可不可以通过 在函数里定义一个指针指向strSrc,来改掉字符串的值呢?给出以下代码:#include #includevoid fuc(const char *p){

2015-03-17 12:47:35 7380

原创 【C语言】reverse_string(char * string)(递归实现)

递归实现reverse_string(char * string)函数。翻转 原来的字符串是改变 不是打印出来。/*编写一个函数reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。*/#include void reverse_string(char * string

2015-03-14 16:34:01 1205

原创 【C语言】递归函数DigitSum(n)

//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,//例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19#include int fuc(int x){ if(x!=0) return x%10+(fuc(x/10)); return 0;}int main(){ printf("%d\n",fuc(2138

2015-03-14 16:29:46 843

原创 【C语言】编写一个函数实现n^k,使用递归实现

#include int fuc(int x,int n){ if(n!=1) return x*fuc(x,n-1); return 1; }int main(){ printf("%d\n",fuc(3,4)); return 0;}

2015-03-14 16:29:06 983

原创 【C语言】最大公约数(更相减损法)和(辗转相除法)

#include#include /* 编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4*///更相减损法int fuc(int m,int n){ int i=0,temp,x; while(m%2==0 && n%2==0) //判断m和n能被多

2015-03-10 22:59:44 5245

原创 【C语言】编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)

/* 编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)例如:"12" 返回12"-123" 返回-123函数原型:int my_atof(char *str)*/#include int my_atof(char *str){ int flag=0; int m=0; if(*str=='-') { flag=1; str++;

2015-03-10 22:57:25 13175 1

原创 【C语言】将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)

#include /*编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)例如:"12.34" 返回12.34"-123.34" 返回-123.34函数原型:double my_atof(char *str){}*/double my_atof(char *str){ double m=0,n=0,x=1; int flag=1; in

2015-03-10 22:56:48 3528

原创 【C语言】数字的字符串转化为 数字

#include /*这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。如果字符串参数包含了任何非数字字符,函数就返回零。*/int ascii_to_integer(char *str){int i=0;while(*str!='\0'){if(*str'9')return 0;i*=10;  

2015-03-10 22:54:45 2409

原创 【C语言】厄密多项式

#include/* 厄密多项式*/int hermite(int n, int x){ if(n<=0) return 1; else if(n==1) return 2*x; else if(n>=2) return 2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x);}int main(){ int n,x; puts

2015-03-10 22:51:53 736

原创 【数据结构】链式队列

//linkqueue.h#include "stdio.h"#include "stdlib.h"#include #define MAXSZIE 30struct qNode{ char name[MAXSZIE];char author[MAXSZIE];int Pages;double Price;char IsForeign;struct qNode * next;

2015-02-10 14:41:23 618

原创 【数据结构】顺序队列

#include #include #define MAX_DATA 10typedef struct seqQueue{ int data[MAX_DATA]; int front,rear;}seqqueue;void InitQueue(seqqueue *sq){ sq->front=0; sq->rear=0;}int Empty(seqqueue sq

2015-02-10 14:36:26 599

原创 【数据结构】链式栈

#include #include typedef struct LinkStack{ int info; struct LinkStack *next;}StackNode;typedef struct LinkTop { struct LinkStack *Top;}LinkTop;LinkTop* creat_Stack(void){ LinkTop *

2015-02-10 14:33:14 629

原创 【数据结构】顺序栈

#include #include #include typedef struct SeqStack{ int length; int top; char *data;}seqstack;seqstack* CreatStack(seqstack *s,int n){ s=(seqstack *)malloc(sizeof(seqstack)+n*sizeof(char))

2015-02-10 14:32:09 814

原创 【数据结构】单链表

#include #include #include typedef struct LinkNode{ int date; //数据域 struct LinkNode * next;}linkNode;typedef struct Linklist{ int length; linkNode *head;}linklist;linklist *Creat

2015-01-18 21:38:19 364

原创 【数据结构】顺序表seqlist

#include #include #include typedef struct seqlistNode{ int date;}seqlistNode;typedef struct SEQLIST{ unsigned int lengh; //长度 unsigned int count; //已存元素长度 seqlistNode * date; //数据

2015-01-18 14:10:46 1948

原创 【数据结构】哈夫曼树实现编码译码

根据一段字符串中字符的个数 作为该字符的权值生成哈夫曼树。       然后根据生成的哈夫曼编码,对任意字符串实现编码,对任意二进制串实现译码。程序运行结果:1.程序主界面:2.根据字符串 创建哈夫曼树及编码:3.生成的编码表如下:4.根据生成的哈夫曼编码对字符串编码:5.生成的编码保存在文件中:6.对二进制串译码

2015-01-07 22:16:13 21189 10

原创 【c语言】实现翻转字符串函数reverse_string

函数reverse_string(char * string)实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。#include #include#define SWAP(a,b,c) ((c)=(a),(a)=(b),(b)=(c))void reverse_string(char * s){ char *p=s; char t

2015-01-07 22:14:12 8277

原创 【c语言】实现Strcat函数

实现char * my_strcat(char * dest,char *src)函数.返回: dest字符串的地址。功能:将src指向的字符串追加到dest指向字符串的后面。例如:char dest[10] = "andef";char *src = "ghi";my_strcat();之后,dest指向的字符串为"andefghi".代码:#in

2015-01-07 22:05:11 6767

原创 【C语言】二分查找法

两种写法:循环:int fuc(int *s,int x,int max){ int left=0; int right=max-1; int mid; while(left<=right) { mid=(right+left)/2; if(s[mid]>x) right=mid-1; else if(s[mid]<x) left=mid+1; e

2014-12-28 19:01:17 549

原创 【C语言】逆转二进制数的几种方法

比如输入10(1010)输出 5(101)代码有三种:最笨的方法循环:int fuc(int x){ int count=0; int num=0; int n=x; while(n!=0) { n/=2; count++; } while(x!=0) { if(x%2==1) num+=(int)pow(2,count-1); x/=

2014-12-28 18:59:01 2024 1

原创 【C语言】9的个数

输出100以内 9的个数。循环写法:int fuc2(){ int num=1; int x,count=0; while(num<100) { x=num; while(x!=0) { if(x%10==9) count++; x=x/10; } num++; }return count;}递归写法:int fuc(int

2014-12-28 18:55:20 1521

空空如也

空空如也

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

TA关注的人

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