zoukankan      html  css  js  c++  java
  • 数据结构练习(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

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

  • 相关阅读:
    eggjs 打印mysql日志!!!
    emqx ws转成wss
    华为 荣耀 Android 8.0 安装Google服务 使用google play
    angular + mqtt
    Angular路由参数传递
    Splay学习笔记
    FJOI2019 游记[大概是考完会解封?]
    地图游戏
    「Neerc2016」Expect to Wait
    [BZOJ5248][2018九省联考]一双木棋
  • 原文地址:https://www.cnblogs.com/kedebug/p/2815464.html
Copyright © 2011-2022 走看看