笔试题总结之字符串篇(C/C++)

原创 2012年03月25日 22:08:36

//字符串的拷贝

char* Strcpy(char* strDest, const char* strSrc) {

    if(strDest== NULL || strSrc == NULL) {

        returnNULL;

    }

    if(strDest== strSrc) {

        returnstrDest;

    }

    char*strTemp = strDest;

   while((*strDest++ = *strSrc++) != '\0');

    returnstrTemp;

}

//内存拷贝

void* Memcpy(void* dest, void* src, size_t count)

{

   if(dest ==NULL || src == NULL) {

       returnNULL;

   }

   if(dest ==src) {

       returndest;

   }

   char* cdest =(char*)dest;

   char* csrc =(char*)src;

//关键,防止拷贝覆盖

   if((csrc <cdest) && (csrc+count > cdest)) {

      while(count--)

          cdest[count] = csrc[count];

   } else {

      while(count--)

          *cdest++ = *csrc++;

   }

   return dest;

}

 

//字符串反转

char* reverse_self(char* str, int n) {

    if(str ==NULL)

        returnNULL;

    int low = 0;

    int high =n-1;

    char ch;

    while(low< high) {

        ch =str[low];

        str[low]= str[high];

       str[high] = ch;

        ++low;

        --high;

    }

    return str;

}

 

//按单词逆序

char* reverse_by_word(char* str, int n) {

    if(str ==NULL)

        returnNULL;

    str =reverse_self(str, n);

    char* p =str;

    int cnt = 0;

    while(*p) {

        if(*p !=' ')

           ++cnt;

        ++p;

       if((*p == ' ' || *p ==NULL) && cnt > 1) {

           reverse_self(p-cnt, cnt);

            cnt= 0;

        }

    }

    return str;

}

 

 

 

//整数转化成字符串

char* num_to_str(int num, char* str, int size) {

    int cnt = 1;

    int temp =num/10;

    while(temp){

        temp /=10;

        ++cnt;

    }

    if(num <0) {

        temp =-num;

        ++cnt;

    }

    if(size <cnt+1) {

        returnNULL;

    }

    if(num <0) {

        num =-num;

        str[0] ='-';

    }

    str[cnt] ='\0';

    while(num) {

       str[--cnt] = '0' + num%10;

        num /=10;

    }

    return str;

}

 

 

//String构造函数

String::String(const char *str)

{

if(str == NULL)//strlen在参数为NULL时会抛异常才会有这步判断

{

m_data = new char[1];

m_data[0] = '\0' ;

} else {

m_data = newchar[strlen(str) + 1];

strcpy(m_data,str);

}

}

//拷贝构造函数

String::String(const String &another)

{

m_data = newchar[strlen(another.m_data) + 1];

strcpy(m_data,other.m_data);

}

//赋值操作符

String& String::operator =(const String &rhs)

{

if ( this ==&rhs)//判断自我赋值

return *this ;

delete []m_data; //删除原来的数据,新开一块内存

m_data = newchar[strlen(rhs.m_data) + 1];

strcpy(m_data,rhs.m_data);

return *this ;

}

 

 

/* 在母串中查找子串出现次数的代码。*str:母字符串;*s:子字符串*/

int count(char*str,char* s)

{

char* s1;

char* s2;

int count = 0;

while( *str !='\0' )

{

s1 = str;

s2 = s;

while( ( *s2 ==*s1 ) && ( *s2 != '\0' ) && ( *s1 != '\0' ) )

{

s2++;

s1++;

}

if( *s2 == '\0')

count++;

str++;

}

return count;

}

 

相关文章推荐

面试考题之9.1:数组与字符串(C/C++版)

1.1  实现一个算法,确定一个字符串的所有字符是否全部不同。假如不允许使用额外的数据结构,又该如何处理? 解决方案:  C++ Code  1 2 3 4 5 6 7 8 9 10 1...

C++笔试题目大全(笔试宝典)(不断完善中)

1.new 、 delete 、 malloc 、 free 关系 delete 会调用对象的析构函数 , 和 new 对应 free 只会释放内存, new 调用构造函数。 malloc 与 f...
  • Lina_ACM
  • Lina_ACM
  • 2016年06月07日 13:29
  • 18208

C++字符串操作笔试题第二波

//1.字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。 //例如输入“we are happy.”,则输出“we%20are%20happy.”。 #include #inc...

2011东软校园招聘笔试题部分知识点总结——语言部分(C/C++)

如题,这里简要总结一下今年东软校园招聘笔试题中的一些知识点。东软的笔试题一共有两套,第一套称之为通用能力测试,其实就是智力题。第二套称之为专业能力测试,其实就是计算机专业知识的题。这里总结的一些内容主...

C/C++在线笔试题总结(持续更新)

下午在牛客网上试做了一下2015校招研发岗位的笔试题,错了蛮多的,这里总结一些题目吧。 1、不算main这个进程,到底创建了多少个进程? int main(int argc, char* argv[]...

笔试题汇集之大数处理篇(C/C++)

输入二个64位的十进制数,计算相乘之后的乘积。 答:以下代码为网上别人贴出的,输入任意位数十进制数(包括小数,负数)都可以得出正确结果。 思路是:将大数当作字符串进行处理,也就是将大数用10进制字...

c/c++笔试题——C++中 new/delete 概念和用法总结

学过C++的程序员都知道,new/delete是其管理内存的主要方法。与C语言相比,C++支持面向对象技术,因此在内存管理方面有所区别。       在C++中,数据对象(基本类型和复合类型)的...

嵌入式C常见笔试题:字符串

一.strcat、strcpy、strcmp、strlen函数的实现 1 实现strcat函数 格式:extern char *strcat(char *dest,c...

2011阿里巴巴集团实习生招聘笔试题 C&C++ 腾讯附加题

公共题 http://blog.csdn.net/wangran51/article/details/8876234 选择题(每题5分) 1. 若一棵二叉树具有10个度为2的结点...

设计模式C++学习笔记之十一(c/c++面试笔试题)

一、指针与引用有什么区别? 1、指针会占用内存,引用不占用内存。 2、引用在定义时必须初始化。 3、没有空的引用,但是有空的指针。 二、static关键的几个作用 1、函数体内的static变量的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:笔试题总结之字符串篇(C/C++)
举报原因:
原因补充:

(最多只允许输入30个字)