面试49

以下是剑指offer的有关atoi函数的实现

对于这种简单的面试算法题目,面试官的用意往往是考察我们程序的容错能力,考察我们在编程的时候对程序各方面的考虑。下面是模仿作者的算法写的程序。

#include<iostream>
using namespace std;

bool flag = false;

int MyCore(char*p,bool minus)
{
    int num = 0;
    while (*p != '\0')
    {
        if (*p>='0'&& *p<='9')
        {
            int sign = (minus) ? -1 : 1;
            num = num * 10 + sign*(*p - '0');
            if (!minus&&num > 0x7fffffff || minus &&num < 0x80000000)
            {
                num = 0;
                break;
            }
        }
        else
        {
            num= 0;
            break;
        }
        p++;
    }
    if (*p == '\0')
        flag = true;
    return num;

}



int MyAtoI(char *p)
{
    if (NULL == *p)
        return 0;
    bool minus = false;
    if ('-' == *p)
    {
        p++;
        minus = true;
    }
    if ('+' == *p)
    {
        p++;
        minus = false;
    }
    if (*p == '\0')
        return 0;
    int value = MyCore(p,minus);
    return value;
}

int main()
{
    char *p = "465";
    int m = MyAtoI(p);
    if (flag)
    {
        cout << "成功,输出: " << m << endl;
    }
    else
        cout << "输入字符有问题!" << endl;
    return 0;


}

以上是atoi,那么itoa呢。

你可能感兴趣的:(atoi)