输入一个以回车结束的字符串,将其中的数字字符转换为整数输出,要求定义和调用函数atoi(s)

输入一个以回车结束的字符串少于10个字符将其中的数字字符转换为整数输出。要求定义和调用函数atoi(s)该函数将字符串s转换为整数。
运行示例
 Enter a string1+2=3
The integer123
【程序】
#include <stdio.h>
int atoi(char *s)
{ int i,sum=0;
for(i=0; (9) ;i++) (9)s[i]!='\0'
if(s[i]>='0' && s[i]<='9')
(10) ; (10)sum=sum*10+(s[i]-'0')
return sum;
}
void main()
{ int i;char s[80];
printf("Enter a string:");
while((s[i]=getchar())!='\n') i++;
(11) (11) s[i]='\0';
printf("The integer:%d\n", (12) ); } (12)atoi(*s)

知道答案,但是不懂啥意思
要计算过程,解析,C语言白痴,有些看不懂!
‘\0’到底什么意思?

(9)for(i=0; s[i]!='\0' ;i++)的意思是从前往后,只要字符不是空就执行下列操作,C语言的字符串都是以'\0结尾',所以s[i]!='\0'就是指字符串还没有遍历完。
if(s[i]>='0' && s[i]<='9')
sum=sum*10+(s[i]-'0');的意思就是这个字符是数字的话,sum这个数乘十加上这个字符表示的数字。s[i]-'0'可以获得这个字符表示的数字,应为ASCII码0-9就是连续的'9'-'0'=9……'1'-'0'=1;另外说一句字母也是连续编码所以我们可以用c + 'A' - 'a',c + 'a' - 'A'这样的语句来转换大小写。
while((s[i]=getchar())!='\n') i++;
s[i]='\0';
从键盘读入字符知道遇到换行符,这也是学C的时候常用的语句,不过可用gets(s)代替。
getchar是从键盘获得一个字符s[i]=getchar()等价于scanf("%c",&s[i]);

最后一样根据上面函数的实参写就是了int atoi(char *s),所以调用的时候是atoi(*s);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-11
#include <stdio.h>
int atoi(char *s)
{ int i,sum=0;
for(i=0; (9) ;i++) (9)s[i]!='\0' //从第一个直到最后一个,第一个是s[0],最后一个结束字符是‘\0’
if(s[i]>='0' && s[i]<='9')
(10) ; (10)sum=sum*10+(s[i]-'0') //将数字字符转成整型数字后纳入s的数码序列,s[i]-'0'是用s[i]的ASCII码-'0'的ASCII码
return sum; //返回的是完整的整数。
}
void main()
{ int i;char s[80];
printf("Enter a string:");
while((s[i]=getchar())!='\n') i++; //如果获取的字符不是换行,读下一字符
(11) (11) s[i]='\0'; //设字符串结束标志,因为是逐个输入字符,结束标志也要人工输入。
printf("The integer:%d\n", (12) ); } (12)atoi(*s) //输出的内容
第2个回答  2013-05-11
‘\0’是字符串的结束符(不是可见字符),就是字符串的最后一个字符。
提示一下,出题有点问题,自己回去看看C语言的书(字符串格式化部分),'\0' '\n' '\r' 分别代表什么意思。追问

知道意思,但放在题目里就看不懂了,顺便可以解释 下这个是怎么运算的吗?看不懂啊

相似回答