/* 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将本地文件复制到Hadoop文件系统

    代码: package com.hadoop; import java.io.BufferedInputStream; import java.io.FileInputStream; import j ...

  2. D6

    今天依旧很惨...本来第二题可以A的,感觉很久没有碰数学,出现这样的低级错误,简直逗了...晚上的话打算找了书店,静下心来看点书进去吧 但是其他题目就不太好写了..我直接发题解好了 T1:贪心 其实贪 ...

  3. Moq让单元测试变得更简单

    [ASP.Net MVC3 ]使用Moq让单元测试变得更简单 前几天调查完了unity.现在给我的任务是让我调查Moq. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...

  4. PHP gbk转换成utf8

    /** * GBK ASCII 转换成utf8 */ public function to_utf8($str){ $detect = array('ASCII', 'GBK', 'UTF-8'); ...

  5. [实验]通过内核Patch去掉iOS-v4.3.3的沙盒特性

    环境: 1.Mac OS X 10.9.2 2.xcode 5.1.1 3.gcc 4.8 4.redsn0w 0.9.15b3 前提: 1.获取 iOS 4.3.3 的kernelcache,并解密 ...

  6. 程序处理数据库中值字段值为null的查询显示

    1.如果你做了一个简单的注册界面,需要用户进行注册,但有些项是不必要填的,当用户完成注册时,数据库表中的相应字段的值会写入null,但如何将查询的字段的值null显示出来? 2.首先我们学习一下如何向 ...

  7. cocos2d-x 通过socket实现http下载及断点续传的实现

    cocos2d-x 通过socket实现http下载及断点续传的实现 代码未经进一步的整理,可能比较混乱. 首先,2dx的socket库由BSSocket组成.可跨平台,在windows上已验证. 1 ...

  8. Fluent Nhibernate code frist简单配置

    Fluent Nhibernate code frist简单配置   前言 在以前的项目开发过程中使用nhibernate做完orm映射工具需要编写大量的xml映射文件,项目过程中往往会因为一个字段等 ...

  9. JavaScript 面向对象编程(三)如何写类和子类

    在JavaScript面向对象编程(一)原型与继承和JavaScript面向对象编程(二)构造函数和类中,我们分别讨论了JavaScript中面向对象的原型和类的概念.基于这两点理论,本篇文章用一个简 ...

  10. visio UML用例里面找不到include关系

    今天用Microsoft Visio 2007画用例图时,发现visio UML用例里面找不到include关系,查到一个可行的解决办法:  1)创建一个UML用例图模板:打开Microsoft Vi ...