博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串转换成整数
阅读量:5337 次
发布时间:2019-06-15

本文共 751 字,大约阅读时间需要 2 分钟。

题目描述

输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整数123。

给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi。

 

 思路:

  • 当我们扫描到字符串的第一个字符'1'时,由于我们知道这是第一位,所以得到数字1。
  • 当扫描到第二个数字'2'时,而之前我们知道前面有一个1,所以便在后面加上一个数字2,那前面的1相当于10,因此得到数字:1*10+2=12。
  • 继续扫描到字符'3','3'的前面已经有了12,由于前面的12相当于120,加上后面扫描到的3,最终得到的数是:12*10+3=123。

   从左至右扫描字符串,把之前得到的数字乘以10,再加上当前字符表示的数字。

int StrToInt(const char *str){    int n = 0;    while(*str!=0){        int c = *str-'0';        n = n*10+c;        ++str;    }    return n;}

显然,上述代码忽略了以下细节:

  1. 空指针输入:输入的是指针,在访问空指针时程序会崩溃,因此在使用指针之前需要先判断指针是否为空。
  2. 正负符号:整数不仅包含数字,还有可能是以'+'或'-'开头表示正负整数,因此如果第一个字符是'-'号,则要把得到的整数转换成负整数。
  3. 非法字符:输入的字符串中可能含有不是数字的字符。因此,每当碰到这些非法的字符,程序应停止转换。
  4. 整型溢出:输入的数字是以字符串的形式输入,因此输入一个很长的字符串将可能导致溢出。

 

 

转载于:https://www.cnblogs.com/linwx/p/7745193.html

你可能感兴趣的文章
食堂自助点餐系统NABCD
查看>>
213. String Compression【LintCode java】
查看>>
适应环境
查看>>
nexus设备android4.1.1系统下载地址及安装方法
查看>>
Python—语句
查看>>
day20——rac搭建
查看>>
Windows编程
查看>>
java数据结构之线性表
查看>>
Yii2 CSRF
查看>>
高德地图接口测试地址
查看>>
shell 获取不同目录下指定文件,并把文件复制到一个文件夹下面
查看>>
hdu-3790最短路刷题
查看>>
微信小程序开发技巧总结 (一)-- 数据传递和存储
查看>>
Java基础编程题——分别统计出其中汉字、英文字母、空格、数字和其它字符的个数...
查看>>
物理机以及不同的虚拟机的转换方法
查看>>
express get和post方法
查看>>
关于日历实现代码里lunarInfo(农历)数组
查看>>
【转】winrar命令行详解
查看>>
#!/usr/bin/python3 和 #!/usr/bin/env python3的区别
查看>>
AWK中的OFS的问题
查看>>