设为首页 加入收藏

TOP

C/C++面试问题分类大汇总(七)
2014-09-23 08:57:05 来源: 作者: 【 】 浏览:348
Tags:C/C 面试 问题 分类 汇总
bsp;  x=-x;

    }

    return x;

}

itoa

char* itoa(int val,char* buf,unsigned int radix)

{

char *bufptr;

char *firstdig;

char temp;

unsigned int digval;

assert(buf != NULL);

bufptr = buf;

if (val < 0)

{

*bufptr++ = ‘-’; val = (unsigned int)(-(int)val);

}

firstdig = bufptr;

do

{

digval =(unsigned int) val % radix; val /= radix;

if (digval > 9)

{

*bufptr++ = (char)(digval – 10 + ‘a’);

}

else

{

*bufptr++ = (char)(digval + ’0′);

}

} while(val > 0);

*bufptr– = ‘\0′;//设置字符串末尾,并将指针指向最后一个字符

do //反转字符

{

temp = *bufptr; *bufptr = *firstdig; *firstdig = temp;

–bufptr; ++firstdig;

} while(firstdig < bufptr);

return buf;

}

String实现

已知String原型为:

class String

{

public:

//普通构造函数

String(const char *str = NULL)

//拷贝构造函数

String(const String &other)

//析构函数

~String(void);

//赋值函数

String & operator=(String &other) //oh,原题目打错了,string可是一个关键字

private:

char* m_str;

unsigned m_uCount;

};

分别实现以上四个函数

//普通构造函数

String::String(const char* str)

{

    if(str==NULL)                //如果str为NULL,存空字符串

{

        m_str = new char[1];        //分配一个字节

        *m_str = ‘\0′;            //赋一个’\0′

}else

    {

        m_str = new char[strlen(str) + 1];//分配空间容纳str内容

        strcpy(m_str, str);         //复制str到私有成员m_str中

    }

}

//析构函数

String::~String()

{

    if(m_str!=NULL)    //如果m_str不为NULL,释放堆内存

{

        delete [] m_str;

        m_str = NULL;

}

}

//拷贝构造函数

String::String(const String &other)

{

    m_str = new char[strlen(other.m_str)+1];    //分配空间容纳str内容

    strcpy(m_str, other.m_str);            //复制other.m_str到私有成员m_str中    

}

//赋值函数

String & String::operator=(String &other)

{

    if(this == &other)                //若对象与other是同一个对象,直接返回本身

{

     &nb

首页 上一页 4 5 6 7 8 9 10 下一页 尾页 7/11/11
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++ 数据结构、算法笔试题 下一篇关于C++ Traints——网易09年笔试..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: