数据结构练习(15)把字符串转换成整数

http://zhedahht.blog.163.com/blog/static/25411174200731139971/

题目虽简单,但是确实很能考察基本功以及编程规范,这牵涉到自己设计一个函数,这个函数应该遵循什么样的规范以及什么事项。下面引用自原博客:

分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程序员的思维和编程习惯,因此已经被包括微软在内的多家公司用作面试题。建议读者在往下看之前自己先编写代码,再比较自己写的代码和下面的参考代码有哪些不同。

#include <iostream>
#include <cstdio>
using namespace std;

bool str2int(const char *b, int& num)
{   
    if (b == NULL)
        return false;

    long long n = 0;
    bool minus = false;
    const char *s = b;

    if (*s == '+')
        ++s;
    else if (*s == '-')
        ++s, minus = true;

    while (*s != '\0')
    {
        if ('0' <= *s && *s <= '9')
        {
            n = n * 10 + *s - '0';
            if (n > numeric_limits<int>::max())
                return false;
            ++s;
        }
        else
            return false;
    }
    if (minus)
        n = 0 - n;
    num = n;
    return true;
}

int main()
{
    char b[20];
    gets(b);
    int num;
    bool flag = str2int(b, num);
    if (flag)
        printf("%d\n", num);
    else
        printf("error\n");
    return 0;
}
-------------------------------------------------------

kedebug

Department of Computer Science and Engineering,

Shanghai Jiao Tong University

E-mail: kedebug0@gmail.com

GitHub: http://github.com/kedebug

-------------------------------------------------------

原文地址:https://www.cnblogs.com/kedebug/p/2815464.html