C++编程:将数字字符串转化成一个整数 ?
函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。intfun(char*str){intnum=0;while(*str){num*=10;num+=...
函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。
int fun(char *str)
{
int num=0;
while(*str)
{
num*=10;
num+=*str-'0';
str++;
}
return num;
}
求大神解释一下那个while函数中每个语句的含义,最好能详细一些,我实在是看不懂啊 展开
int fun(char *str)
{
int num=0;
while(*str)
{
num*=10;
num+=*str-'0';
str++;
}
return num;
}
求大神解释一下那个while函数中每个语句的含义,最好能详细一些,我实在是看不懂啊 展开
展开全部
int fun(char *str)
{
int num=0;
while(*str) //str是字符串的首字母的地址
{
num*=10;
//因为是从左至右对字符串进行扫描,每得到一位都要乘以10,比如先得到1,接着得到2,那么就要//1*10+2
num+=*str-'0';
//str是一个字母的地址,*str相当于得到该字母,比如‘5’,因为我们要的是5,那么‘5’-‘0’就能得到5
str++;
//将str指向下一个字母的地址
}
return num;
}
编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,是计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
编程:设计具备逻辑流动作用的一种“可控体系”【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程。】
展开全部
int fun(char *str)
{
int num=0;
while(*str) //str是字符串的首字母的地址
{
num*=10;
//因为是从左至右对字符串进行扫描,每得到一位都要乘以10,比如先得到1,接着得到2,那么就要//1*10+2
num+=*str-'0';
//str是一个字母的地址,*str相当于得到该字母,比如‘5’,因为我们要的是5,那么‘5’-‘0’就能得到5
str++;
//将str指向下一个字母的地址
}
return num;
}
{
int num=0;
while(*str) //str是字符串的首字母的地址
{
num*=10;
//因为是从左至右对字符串进行扫描,每得到一位都要乘以10,比如先得到1,接着得到2,那么就要//1*10+2
num+=*str-'0';
//str是一个字母的地址,*str相当于得到该字母,比如‘5’,因为我们要的是5,那么‘5’-‘0’就能得到5
str++;
//将str指向下一个字母的地址
}
return num;
}
追问
谢谢你的回答。那三条语句的意思我看懂了,不过整体上是如何实现“字符串转化成整数”的功能的?也就是说从这三条语句中我看不出这个功能。能否再麻烦你解释一下?不胜感激。。。
追答
开始str指向首字符的地址,通过递增str,每次加1,我们我们就能遍历该字符串的每一个字符,然后将其输出,这里程序使用了num变量来保存转换结果,首先保存的是第一个数字,当我们得到第二个的时候,我们需要将第一个数字左移一位,也就是乘以10,然后再加上刚刚得到的新数字。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的程序是完整的,不需要补充,加上main 函数就能实现功能
int fun(char *str)
{
int num=0;
while(*str) //判断字符串中的每一个字符,因为你传入的是字符串所以最后一个字符会默认是0,
{ //这也是跳出循环的条件
num*=10; //因为从最高位取出来的所以,每次必须*10
num+=*str-'0';字符转换整形就需要将字符-'0'或-48
str++;//将指针移到下一个字符
}
return num;
}
希望对你有帮助
int fun(char *str)
{
int num=0;
while(*str) //判断字符串中的每一个字符,因为你传入的是字符串所以最后一个字符会默认是0,
{ //这也是跳出循环的条件
num*=10; //因为从最高位取出来的所以,每次必须*10
num+=*str-'0';字符转换整形就需要将字符-'0'或-48
str++;//将指针移到下一个字符
}
return num;
}
希望对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果说要补充的话,函数参数最好加const
int fun(const char *str)
函数内部还要判断是不是出现非‘0’ ~ '9' 的字符,如果出现可以返回0或者抛出异常
while(*str)
{
if((*str < '0') || (*str > '9'))
{
return 0;
}
.......
}
int fun(const char *str)
函数内部还要判断是不是出现非‘0’ ~ '9' 的字符,如果出现可以返回0或者抛出异常
while(*str)
{
if((*str < '0') || (*str > '9'))
{
return 0;
}
.......
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询