/* strcpy函数实现 拷贝字符串 */
char* Strcpy(char* dst, char* src)
{
assert(dst != NULL && src != NULL); // 断言 dst和src不能为NULL char* dst_address = dst; // 保存目的地址 while((*(dst++) = *(src++)) != '\0')
{
/* do nothing */
} return dst_address; // 返回目的地址 允许链式表达式
} /* strncpy函数实现*/ char* Strncpy(char* dst, const char* src, size_t num)
{
assert(dst != NULL && src != NULL); // 断言 dst和src不能为NULL char* dst_address = dst; size_t i = ; // 控制复制的个数
while(i++ < num && (*dst++ = *src++) != '\0')
{
/* do nothing */
} if(*dst != '\0') // 字符必须以'\0'结尾
{
*dst = '\0';
} return dst_address;
} size_t Strlen(const char *str)
{
assert(str != NULL); int count = ; while(*str++ != '\0')
{
++count;
} return count;
} void* Memcpy( void *dest, const void *src, size_t count )
{
assert(dest != NULL && src != NULL); char* _dest = (char*)dest;
char* _src = (char*)src; while (count--)
{
*_dest++ = *_src++;
} return dest;
} void * Memmove ( void * destination, const void * source, size_t num )
{
char* _dst = NULL;
char* _src = NULL; if(destination <= source)
{
_dst = destination;
_src = source; while (num--)
{
*_dst++ = *_src++;
}
}
else
{
_dst = destination;
_src = source; _dst += num;
_src += num; while (num--)
{
*--_dst = *--_src;
}
}
}
 int FibonacciSequence(unsigned int n)
{
if( == n || == n)
{
return n;
}
else
{
return FibonacciSequence(n-)+FibonacciSequence(n-);
}
}
 int BinSearch(int* arr, int left, int right, int key)
{
if(!arr)
{
return -;
} while (left <= right)
{
int mid = left + ((right - left) >> ); if(arr[mid] < key)
{
left = mid + ;
}
else if(arr[mid] > key)
{
right = mid - ;
}
else
{
return mid;
}
}
return -;
}
 // 插入排序
void InsertionSort(int* arr, int len)
{
for(int j = ; j < len; ++j)
{
int i = j - ;
int key = arr[j]; while(i >= && a[i] > key)
{
a[i+] = a[i];
--i;
}
arr[i+] = key;
}
}
 int Partition(vector<int>& vec, int low, int up)
{
int pivot = vec[up];
int i = low - ; for(int j = low; j < up; ++j)
{
if(vec[i] < pivot)
{
++i;
std::swap(vec[i], vec[j]);
}
}
std::swap(vec[i+], vec[up]); return i+;
} void QuickSort(vector<int>& vec, int low, int up)
{
if(low < up)
{
int mid = Partition(vec, low, up); QuickSort(vec, low, mid - );
QuickSort(vec, mid + , up);
}
} void Sort(vector<int>& vec)
{
QuickSort(vec, , vec.size() - );
}
template <typename T>
int BinSearch(std::vector<T>& array, T key)
{
int left = ;
int right = array.size(); while (left < right)
{
int mid = (left + right) >> ; // 中点 if (array[mid] < key)
{
left = mid;
}
else if (key < array[mid])
{
right = mid;
}
else
{
return mid;
}
} return -; // 查找失败
}

c/c++笔试面试经典函数实现的更多相关文章

  1. 2. C/C++笔试面试经典题目二

    1. C和C++中struct有什么区别? [参考答案] [解析]C中的struct没有保护行为,没有public,private,protected,内部不能有函数,但可以有函数指针. 2. C++ ...

  2. 1. C/C++笔试面试经典题目一

    1. 不用循环和递归,实现打印数字0到999. #include <iostream> #include<stdio.h> using namespace std; #defi ...

  3. 3. C/C++笔试面试经典题目三

    64. 如何打印出当前源文件的文件名以及源文件的当前行号? [参考答案]cout << __FILE__ ; cout<<__LINE__ ; __FILE__和__LINE_ ...

  4. 找工作笔试面试那些事儿(8)---常问的CC++基础题

    这一部分是C/C++程序员在面试的时候会被问到的一些题目的汇总.来源于基本笔试面试书籍,可能有一部分题比较老,但是这也算是基础中的基础,就归纳归纳放上来了.大牛们看到一笑而过就好,普通人看看要是能补上 ...

  5. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  6. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  7. catalan数及笔试面试里那些相关的问题(转)

    一.catalan数由来和性质 1)由来 catalan数(卡塔兰数)取自组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项 ...

  8. go golang 笔试题 面试题 笔试 面试

    go golang 笔试题 面试题 笔试 面试 发现go的笔试题目和面试题目还都是比较少的,于是乎就打算最近总结一下.虽然都不难,但是如果没有准备猛地遇到了还是挺容易踩坑的. 就是几个简单的笔试题目, ...

  9. 面试经典算法题集锦——《剑指 offer》小结

    从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...

随机推荐

  1. hadoop集群的搭建与配置(1)

    前言             首先hadoop是在linux系统上进行搭建的,我们首先要在自己电脑上装上虚拟机然后装linux系统,因为我们是测试:在本地虚拟机上装两个linux分别搭建好hadoop ...

  2. Day1:T3 bfs T4 树形DP

    T3:BFS 回看了一下Day1的T3...感觉裸裸的BFS,自己当时居然没有看出来... 同时用上升和下降两种状态bfs即可 这一题还要注意一个细节的地方,就是题目要求的是求往返的最优解 k=min ...

  3. AspNet MVC3中过滤器 + 实例

    AspNet MVC3中过滤器 + 实例 过滤器在请求管线注入额外的逻辑,提供简单优雅的方法实现横切点关注(AOP),例如日志,授权,缓存等应用.通过AOP可以减少在实际的业务逻辑中参杂过多非直接业务 ...

  4. ASP.NET MVC 使用MSBuild生成的几个注意事项

    做新项目,当时参考NopCommerce的结构,后台Nop.Admin是一个独立的Area Web Site,但部署的时候发现,使用一键发布,Admin Area会丢失. 研究了下NopCommerc ...

  5. VS调试技巧与快捷键&&VS快捷键

    VS调试技巧与调试快捷键 1.添加断点或取消断点:F9(或者点击代码行最左边的灰色行)   2.调试:F10逐过程(不进入函数内部,直接获取函数运行结果)  F11逐语句(会进入函数),如果想跳出函数 ...

  6. js操作iframe总结

    一 在父页面操作子页面   IE下操作IFrame内容的代码: document.frames["MyIFrame"].document.getElementById(" ...

  7. HTML5-WebSocket-初探

    1.环境准备 主要是用<HTML5 程序设计>(第二版)作为学习参考资料.但是上面用的WebSocket服务器是用python写的.偶不懂python,于是得找另外一个替代实现,这里适用n ...

  8. MySQL TIMESTAMP(时间戳)详解

    在创建表时如果表中有一个字段类型为TIMESTAMP,则该字段默认的生成语句为: CREATE TABLE `test` ( `id` int(11) DEFAULT NULL, `ctime` ti ...

  9. springMVC3学习(三)--handlerMapping和handlerAdapter

    基本结构和 springMVC3学习(一)--框架搭建 差不多,这里不再用Annotation注解的方式 以下只说明需要修改的部分: 1.在Spring配置文件中配置HandlerMapping.Ha ...

  10. ORM查询语言(OQL)简介高级篇

    ORM查询语言(OQL)简介--高级篇:脱胎换骨 在写本文之前,一直在想文章的标题应怎么取.在写了<ORM查询语言(OQL)简介--概念篇>.<ORM查询语言(OQL)简介--实例篇 ...