一,要求:自己动手编写 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++;
}
else
radix = 10;
while(*str)
{
if(radix == 16)
{
if(*str >= '0' && *str <= '9')
value = value * radix + *str - '0';
else
value = value * radix + (*str | 0x20) - 'a' + 10;
// value = value * radix + *str - 'a' + 10; // 也没问题啊
}
else
value = 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]);
}
分享到:
相关推荐
《C++ Primer》是有名的C++编程教材,其第五版(5th Edition)深入浅出地介绍了C++语言的基础知识以及C++11新标准的特性。这本书由Lippman、Lajoie和 Moo三位作者共同编写,是C++初学者和进阶者的重要参考书籍。 1....
《C++ Primer Plus》是Stephen Prata...此外,实践编程是巩固理论知识的最好方式,所以动手编写代码、调试错误也是学习过程的关键部分。通过不断实践和查阅答案,读者将逐步掌握C++编程技能,并能够解决更复杂的问题。
### C++ Primer习题集(第5版) #### 书籍概述 《C++ Primer》第五版是一本权威的C++编程教程,由Stanley B. Lippman、Josée Lajoie与Barbara E. Moo共同编著。本书旨在帮助读者深入理解C++语言的核心概念及其...
C++ Primer(第三版)是一本经典的C++教程书籍,不仅适合初学者入门学习,也适用于有一定基础的开发者进一步提升自己的技能水平。通过系统地学习本书内容,读者可以掌握C++语言的核心概念和技术,为后续的软件开发...
《C++ Primer》第四版的源代码涵盖了以上所有知识点,每个例子都是精心设计的,便于读者动手实践,深入理解C++语言的每一个概念。通过阅读和运行这些源代码,学习者可以逐步提升自己的编程技能,为成为熟练的C++...
《C++ Primer(第5版)》是一本深入学习C++编程语言的经典教材,由Lippman、Lajoie和 Moo三位资深C++专家合著。这本书覆盖了C++的基础到高级特性,包括面向对象编程、泛型编程以及C++11及后续标准的新特性。以下是对...
《C++ Primer中文版》是一本为初学者设计的C++编程教材,旨在帮助读者深入理解和掌握C++语言。这本书的高清版本提供了清晰的文本和图表,使得阅读体验更佳,尤其适合长时间学习和查阅。目录的存在使得学习者能够快速...
《C++ Primer 习题解答(第4版)》是一本深入C++编程语言的实践指导书籍,由Lippman, Lajoie, 和 Moo三位专家编写。这本习题解答是针对C++ Primer(第四版)教材的,旨在帮助读者巩固和深化对C++的理解。在学习C++的...
9. 模板:模板是C++的泛型编程工具,允许编写能处理多种数据类型的函数和类。通过练习,读者将学习如何定义和使用函数模板、类模板,以及模板元编程。 通过解读书中附录的源代码,读者可以直观地看到C++编程的实践...
《C++ Primer》是C++编程领域的一本经典著作,第五版更是深受程序员喜爱的教程。这本书详尽地介绍了C++语言,从基础语法到高级特性,为读者提供了全面而深入的学习路径。作为英文版,它保持了原汁原味的专业表达,...
《C++ Primer 5th Edition》是一本广受赞誉的C++编程教程,由Lippman、Lajoie和 Moo三位作者共同编写。这本教材深入浅出地介绍了C++语言,适合初学者和有一定经验的程序员。"C++ primer 5e"标签明确了我们讨论的是...
《C++ Primer Plus 第6版 中文版》是一本深入浅出的C++学习书籍,其课后代码习题答案是学习过程中不可或缺的部分。这本书旨在帮助读者从零基础开始掌握C++编程语言,通过实例和习题来巩固理论知识,提升编程技能。...
《C++ Primer (Fifth Edition)》是C++编程领域的一部经典著作,由Lippman、Lajoie和 Moo三位作者共同编写。这本第五版的书籍是为那些希望深入理解和掌握C++语言的程序员准备的,无论是初学者还是经验丰富的开发者,...
《C++ Primer》是C++编程领域的一本经典著作,由Lippman、Lajoie和 Moo三位专家共同编写,提供了全面且深入的C++学习指南。第四版针对C++11标准进行了全面更新,是现代C++编程的必备参考书籍。这个非扫描版意味着它...
《C++ Primer Plus》是一本深受程序员喜爱的C++学习书籍,它深入浅出地介绍了C++编程语言的基础和高级特性。课后习题是学习过程中不可或缺的一部分,它们旨在帮助读者巩固理论知识,提高实际编程技能。这个压缩包...
《C++ Primer 4th Edition》是C++编程语言领域中的经典入门教程,由Lippman、Lajoie和 Moo三位作者共同编写。这本教材以其深入浅出的讲解方式和丰富的实例,深受广大C++初学者和专业开发者的喜爱。在第四版中,作者...
C++ Primer习题集 第5版-Stanley B. Lippman_高清版[带完整书签目录] 【作 者】(美)李普曼,(美)拉乔伊,(美)默著 【出版发行】 北京:电子工业出版社 , 2015.03 【ISBN号】978-7-121-25229-7 【页 数】 520 ...