谁能帮我解释下这题啊?
谁能帮我解释下这题啊?
24.请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
24. long fun(char *p)
{long s=0,t;
int i=0,j,in=strlen(p),k,s1;
if(p[0]=='-')
i++;
for(j=i;j<=n-1;j++)------------
{t=p[j]-'0';
s1=10; 尤其这一段?
for (k=j;k<n-1;k++)
t*=s1;
s+=t; }---------------------------
if(p[0]=='-')
return -s;
else
return s;}
谢谢了
你的问题是,,,,?
明确一下 你的意思是不是说把" 字符串形式的数字 " 变成 " 数字形式的数字"??
比如 char a[5]='123'转换成 int b=123 ?
先回答我的问题,如果是这个 .我有现成的以前自己编的,而且也有现成的 C标准函数.
for(j=i;j<=n-1;j++)//n为字符串的长度
{
t=p[j]-'0';//取出字符串的每一位并且转化为整型.
s1=10;
for (k=j;k<n-1;k++)//等价的转化一个字符串
t*=s1;//个,十,百,千……t是每位上的数字,比如21=2*10+1;234=2*10*10+3*10+4
s+=t; //(上面仁兄的例子举的非常好)
}
long fun(char *p)
{
long s=0,t;
int i=0,j,n,k,s1;
n=strlen(p);//求有多长
if(p[0]=='-')
i++;
for(j=i;j<=n-1;j++)//------------
{
t=p[j]-'0';//这里是这样子的哦~~~
/*这个p[j]是个 ASC码值 '0'也是个 asc码值
你看呀,0 ~~9 的 ASC值 是 58~~57
假如这个 p[j]里头存储的字符是 '6' 它对应的ASC是 64
这个表达式的意思就是
t=64-58 正好是 6 注意了 这行写的数字都是真正的数字不是字符了
也可以这样写 t=p[j]-58*/
s1=10; // <--这个地方 是笨笨做法
//没有必要后面直接 *10多好 ~~节省一个变量空间了
for (k=j;k<n-1;k++)//《注意这里有改动 加括号了》
{
t*=s1;
}
/*举例说明 45623
假如我们处理 5 那么我们需要让 s+=5000
假如是 6 那就是 s+=600
这个循环解决 “"5"后面有多少个"0"的问题”
不过可以改进 用 pow()这个函数
pow(x,y)==x^y pow 在 math.h里
*/
s+=t;
}//---------------------------
if(p[0]=='-')
return -s;
else
return s;
}
/////////
嘎嘎 我都写完了也 贴上去~~
哈哈
嘎嘎 我在上班 无所谓的能帮上你我很高兴
就是上班空闲时间有限,有的时候闲一天,有的时候忙一天...
没准...
我还是新来单位的...
什么灵活都让我干,
嘎嘎,这周让我们回收IP 结果 访问路由的服务器 DOWN了,
不然我还是没时间给你会贴
互相帮助哦 ..我也有8会的