函数如何优化
匚匚 2010-03-31 05:13:08 #include <stdio.h>
#include <math.h>
#include <ctype.h>
double atof_zw(const char *);//此函数的优化问题
int main(void)
{
char a[18];
while(8)
{
printf("请输入一个要转换为整数的字符串:");
fflush(stdin);
fgets(a,18,stdin);
printf("%.13lf\n",atof_zw(a));
}
return 0;
}
double atof_zhw(const char *s)
{
double val=0.0;
int i,sig,n=1;
for(i=0;isspace(s[i]);i++);
sig=(s[i]=='-')?-1:1;
if(s[i]=='-'||s[i]=='+')
i++;
for(;isdigit(s[i]);i++)
val=val*10.0+(s[i]-'0');
if(s[i]=='.')
{
for(i++;isdigit(s[i]);i++)
{
val=val*10.0+(s[i]-'0');
n*=10;
}
val/=n*sig;
}
if(s[i]=='e'||s[i]=='E')
{
if((s[++i]=='-')||(s[i]=='+'))
{
sig=(s[i]=='-')?-1:1;
i++;
}
for(n=0;isdigit(s[i]);i++)
n=n*10+(s[i]-'0');
val*=pow(10.0,sig*n);
}
return val;
}