【C++ Primer】自己动手编写函数 atoi(char *str)
一,要求:自己动手编写 atoi(char *str)函数,功能是将字符串变成数字
简单版本:
需要考虑的地方 1)正负号
2)仅仅考虑十进制
3)如何把数字 字符 变成整数
#include <iostream>
using namespace std;int StrToInt(char * str)
{int value = 0;int sign = 1;if(*str == '-')//负号 {sign = -1;str++;}while(*str)// 此法很巧妙,直接从高位开始乘加即可,不用考虑字符串的长度{value = value * 10 + *str - '0';str++;}return sign*value;
}
int main()
{cout<<StrToInt("123")<<endl;return 0;
}
当然也可以利用strlen或找结束字符的方式寻找最低位,乘数变化即可
二,加强版
下面的程序考虑了八进制、十进制、十六进制的字符串。
int StrToInt(char * str)
{int value = 0;int sign = 1;int radix;if(*str == '-'){sign = -1;str++;}if(*str == '0' && (*(str+1) == 'x' || *(str+1) == 'X')){radix = 16;str += 2;}else if(*str == '0') // 八进制首字符为0{radix = 8;str++;}elseradix = 10;while(*str){if(radix == 16){if(*str >= '0' && *str <= '9')value = value * radix + *str - '0';elsevalue = value * radix + (*str | 0x20) - 'a' + 10;// value = value * radix + *str - 'a' + 10; // 也没问题啊}elsevalue = value * radix + *str - '0';str++;}return sign*value;
}
整数转换为字符串
void itoa (int n,char s[])
{
int i,j,sign;
if((sign=n)<0)//记录符号n=-n;//使n成为正数 i=0;
do{s[i++]=n+’0’;//取下一个数字
}while ((n/=10)>0);//删除该数字
if(sign<0)s[i++]=’-’;
s[i]=’\0’;
for(j=i;j>=0;j--)//生成的数字是逆序的,所以要逆序输出printf("%c",s[j]);
}
原文地址:https://blog.csdn.net/iteye_16284/article/details/82373247
【C++ Primer】自己动手编写函数 atoi(char *str)相关推荐
- C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。
1.题目 规定输入的字符串中只包含字母和*号,请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不 ...
- C语言 请编写函数CHG(char *S) 把字符数组左移后逆转
6-2 请编写函数CHG(char *S) (10 分) 请编写函数CHG(char S)实现程序功能: 把S字符串中的所有字符左移一个位置,串中的第一个字符移到最后,之后把已处理的字符串逆转后仍存入 ...
- c语言定义函数insert,c语言编写函数insert(char s1[ ],char s2[ ],int pos),实现在字符串s1中的指定位置pos处插入字符串s2。...
满意答案 人變了心從未 推荐于 2016.10.18 采纳率:54% 等级:12 已帮助:6450人 你写这个貌似不能实现额 用string.h库很容易实现的 要是你不能用string.h的话 ...
- C语言编程>第九周 ④ 编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根。yn+1=cos(yn)
例题:编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根. yn+1=cos(yn) 迭代步骤如下: (1)取y1初值为0.0. (2)y0=y1,把y1的值赋 ...
- c语言atoi的头文件,atoi函数(atoi函数在那个头文件)
需要导入头文件#include 将字符串转换成一个整数并返回结果.参数str 以数字开头,当函数从str 中读到非数字字符则结束转换并将结果返回.例如, int i = atoi( . atoi(s. ...
- Problem H 编写函数atof()
Problem Description 编写函数atof(char s[])和read_line(char str[], int n),将字符串转换为对应数值的小数. 测试程序为: #include ...
- 6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分)请编写函数Sort函数,将字符串中除首、尾字符外的其余字符按降序排列。函数接口定义:void Sort( char *
6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分) 请编写函数Sort函数,将字符串中除首.尾字符外的其余字符按降序排列. 函数接口定义: void Sort( char *p ...
- 长理2017 f0803 求和:s=1-(1/2)+(1/3)-(1/4).........+(1/n),编写函数fun(char*s),实现字符串的逆置编写程序从基类派生圆柱,设计(均为可运行代码)
求和:s=1-(1/2)+(1/3)-(1/4).........+(1/n), #include <stdio.h>int main() {int n,i;double s=1.0;sc ...
- 自己动手编写CSDN博客备份工具-blogspider之源码分析(3)
作者:gzshun. 原创作品,转载请标明出处! 来源:http://blog.csdn.net/gzshun 周星驰:剪头发不应该看别人怎么剪就发神经跟流行,要配合啊!你看你的发型,完全不配合你的脸 ...
最新文章
- mysql delete 注意
- 使用 word 在 oschina 上写博客
- 启明云端分享|大家都知道ESP32-C3是乐鑫5月刚量产的芯片,大家都传是取代ESP8266的,目前也确实有很多客户升级应用选择替换,那Esp8266与Esp32-C3 从硬件到应用开发有哪些不同呢
- 语言教案 小小计算机,小班《小小手机本领大》语言教案
- Forms身份验证基本原理
- 计算机组装与维护配置清单作业,计算机组装与维护 作业汇.doc
- for ihs linux_Install WAS6.1+IHS for Linux(64bit)
- QZone V8改版之“相册从模糊到清晰”
- python将图片转换为Framebuffer裸数据格式(终端显示图片)
- 无人车企哪家强?通用第一Waymo第二,苹果特斯拉进黑榜
- 摩游世纪CEO宋啸飞:Html5增长趋势已可见
- 海南凤凰机场智能通信解决方案
- 【3】令人头疼—在安装pyenchant外部包时产生的意外事件
- memcpy和memmove以及memcmp
- WPF 实现无边框窗口两种方法
- win2003 iis 设置301转向
- Python之Sqlitespy中选出两表中以id相同的元素
- Daily English Jun 14,2011
- WinCE 6.0 禁用触摸屏的几种方法
- 计算机键盘规律,计算机盲打键盘指法图顺口溜
热门文章
- mysql linux版本 rpm_Linux下查看MySQL版本及rpm里有没有MySQL
- python ui自动化配置文件,Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)...
- 《漫画算法2》源码整理-9 股票交易最大收益
- Java synchronized 详解
- 编码练习——Java-1-基础
- WebAssembly 系列(一):生动形象地介绍 WebAssembly
- Spring - Java/J2EE Application Framework 应用框架 第 16 章 通过Spring使用远程访问和web服务
- 160家优秀国外技术公司博客
- 《疯狂动物城》电脑壁纸
- 意大利罗马银行连环抢劫案告破 一名警察涉案