自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 题:将*放在数组的最前面,且字母顺序不变

整体思路如下:1、因为要将*都放在数组最前面,所以从后向前遍历2、将*放在前面,将非*放在后面代码如下:void Shift(char *arr){ int len = strlen(arr); int i = len - 1; int j = len - 1; while (i >= 0) { if (arr[i] != '*') { arr[j...

2019-08-14 12:02:58 314

原创 题:将字符串中的连续空格合并为一个

整体思路如下:1、将两个指针都指向字符串首元素2、判断前后两个元素是否都为空格3、如果是,就将后一个元素赋值给前一个元素4、如果不是连续空格,就继续向后走void ContinuousSpaces(char *arr){ int len = strlen(arr); int i = 0; int j = 0; while (i < len &&...

2019-08-14 11:51:34 371

原创 题:把字符串中的每个空格替换成20%

在网络编程中,如果URL参数中含有特殊字符,如空格、#等,则可能导致服务器端无法获得正确的参数值我们需要将这些特殊符号转换成服务器可以识别的字符转换的规则是在%后面跟上ASCI码的两位十六进制的表示比如空格的ASCII码是32,即十六进制的0x20,因此空格被替换成”%20“将空格替换成‘%’、’2’和‘0’这 3个字符,代码实现如下:#include<stdio.h&...

2019-08-14 10:54:42 853

原创 题:计算绝对值(找出相邻两个数字中差的绝对值最小的一对数字)

给出n个正整数,要求找出相邻两个数字中差的绝对值最小的一对数字,如果有差的绝对值相同的,则输出最前面的一对数2<n<=100,正整数都在10^16范围内要求:输入:输入包含2行,第一行为n,第二行是n个用空格分隔的正整数输出:输出包含一行两个正整数,要求按照原来的顺序输出样例输入:91 3 4 7 2 6 5 12 32样...

2019-08-13 17:22:02 1942

原创 题:月光宝盒的密码(求严格上升子序列)

密码是这个序列的最长的严格上升子序列的长度(严格上升子序列是指,子序列的元素是严格递增的。例如:[5,1,6,2,4]的最长严格上升子序列为[1,2,4],它的长度为3)要求:输入:第1行一个数N,N为序列的长度(2<=N<=50000)第2到第N+1行:每行一个数,对应序列的元素(-10^9 <= a[i] <= 10^9)输出:一个...

2019-08-13 17:04:54 1560

原创 关于fork源码的总结

fork()的主要作用是把当前进程“复制”一份,并从下一条语句处开始执行,也就是会新产生一个相同的进程。进程是一个正在运行的程序,是资源分配的最小单位,系统管理进程是依靠对进程控制块(PCB)的管理完成的,每个进程的产生分两步,一是:分配PCB,二是准备进程实体,如分配内存空间等。fork() 、pthread_creat()、 vfork()的系统调用分别是sys_fork()、sys_cl...

2019-08-13 16:36:22 494

原创 关于函数重载的总结

函数重载的规则:函数名称必须相同 同作用域 形参必须不同(形参个数不同、形参类型不同、形参排列顺序不同等) 调用点只能看到函数名和传入的参数 返回类型不同不足以成为函数重载的依据(因为函数的返回类型可以相同也可以不相同)函数重载的作用:重载函数通常用来在同一个作用域内用同一个函数名命名一组功能相似的函数 这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好...

2019-08-10 11:10:33 395

原创 关于select、poll、epoll的总结

select、poll、epoll首先这三个函数的作用都是进行I/O复用,最早被使用的是selectselect的原理是用位数组存储要监听的套接字,然后将位数组发送给内核监听起来但是基于它的实现,select有以下缺点:1、监听的描述符很有限,10242、监听的事件也只有读、写、异常3、每次有数据就绪,内核就将其对应的位置为1,表示有数据就绪,然后内核需要将整个位数组发送给...

2019-08-09 21:59:53 321

原创 关于堆栈区别的总结

堆栈的区别管理方式不同:栈:栈区空间由操作系统分配与释放,用于存储局部变量、函数参数等。堆:堆区空间由程序员自主分配与释放。空间大小不同:栈:栈的大小是固定的,不同的操作系统也不同。window一般为2M,linux下为10M堆:理论上可以分配虚拟地址空间大小的内存。分配效率不同:栈分配空间的效率更高。栈的擦偶哦在硬件层提供支持。分配专门的寄存器来存储栈的地址,压栈出...

2019-08-09 21:57:05 1371

原创 关于C和C++区别的总结

C和C++区别1、变量存储位置初始化且初始化不为0的 static 和 全局变量存储在data段 未初始化或者初始化为0的static 和全局变量存储在bss段 局部变量在栈上 new或者malloc申请的内存在堆上2、struct和class的区别C语言中struct不可以为空,c++可以且大小为1 C语言中struct仅仅是结构体,不可以包涵成员方法,c++中struc...

2019-08-09 12:30:00 905

原创 关于智能指针的总结

对于普通指针在日常使用的时候会面临一个释放问题,一种可以保证释放不会出错的方式就是谁申请谁释放但是这种方式实际使用的时候局限性太大,比如说某个函数的功能就是去释放内存,很明显它不能够去释放自己申请的内存指针释放经常会出现两方面的问题:1、内存泄漏2、重复释放因此引入智能指针,智能指针分为强智能指针和弱智能指针强智能指针:智能指针的实现都是对普通指针的一个封装,在封装的时...

2019-08-09 12:21:40 262

转载 关于内存泄漏的总结

内存泄漏(Memory Leak):是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。在堆上分配的内存,如果不再使用了,就应该及时释放,以便后面其他地方可以重用。而在 C 语言中,内存管理器不会自动回收不再使用的内存。如果忘了释放不再使用的内存,这些内存就不能被重用了,这就造成了内存泄漏。内存泄漏缺陷具有隐蔽性、积...

2019-08-03 18:21:26 881 1

原创 关于new和malloc区别的总结

new和malloc都是常用的申请动态内存方式。他们有以下区别:1、malloc / free 是C语言的标准库函数,new/delete是c++的运算符(或者说关键字);2、new/delete比malloc/free更智能,在申请和释放内存时会自动调用对象的构造函数和析构函数(其底层仍靠malloc/free来实现),malloc则只管分配内存并不对所得的内存初始化;3、返回类型不...

2019-08-03 18:16:49 876

原创 关于编译链接原理的总结

编译和链接编译链接过程大致如下:一、预编译(生成*.i文件)(1)将所有的“#define”删除,并且展开所有宏(2)处理掉所有条件预编译指令,如“#if”、“#ifdef”、“#elif”、“#else”、“#endif”(3)处理“#include”指令(这是一个递归过程)(4)删除所有的注释 (“//”和“/* */”)(5)添加行号和文件名标识(6)...

2019-07-29 22:43:59 420

原创 关于c语言动态内存分配的总结

动态内存 : 动态创建内存,并创建大内存 在Windows中,堆中最大的连续内存大概1.3G左右为什么使用动态内存分配 数组在使用的时候可能造成内存浪费,使用动态内存分配可以解决这个问题。头文件为:(stdlib.h) 动态内存使用的最大问题:内存泄漏 ->解决方法:free(p);...

2018-07-25 23:38:54 215

原创 题:输出杨辉三角形前十行(C语言实现)

杨辉三角是一个由数字排列成的三角形数表,一般形式如下:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1......................................................杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。代码:v...

2018-07-19 16:11:58 24691 2

原创 关于n进制的计算方法的总结

例:假设在n进制下,下面的等式成立,567*456=150216,n的值是( D )A.9 B.10 C.12 D.18等式左边=(5n^2+6n+7)*(4n^2+5n+6) =20n^4+24n^3+28n^2+25n^3+30n^2+35n+30n^2+36n+42 =20n...

2018-07-14 23:10:51 3545

原创 关于折半查找法的总结

二分査找就是折半查找,其基本思想是:首先选取表中间位置的记录,将其关键字与给定关键字 key 进行比较,若相等,则査找成功;若 key 值比该关键字值大,则要找的元素一定在右子表中,则继续对右子表进行折半查找:若 key 值比该关键宇值小,则要找的元素一定在左子表中,继续对左子表进行折半査找。如此递推,直到査找成功或査找失败(或査找范围为 0)。折半查找,找到返回下标,失败返回-1...

2018-07-14 21:46:46 1738

空空如也

空空如也

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

TA关注的人

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