科学计数法--从字符串形式转换至数字形式输出,请指教
如题,我写了一个程序希望实现,编译为报错,可是结果不正确,好望高手指点迷津,以下是我写的程序#include<stdio.h>
#include<stdlib.h>
#define N 10
main()
{
int i,l,p=0,e=0,z_;
char s[N],ch;
double x,y,z,final;
printf ("The number:");
i=0;
while((ch=getchar())!='~')
{
if(i==N)
{
printf("位数过多,无法计算!");
exit(0);
}
else
{
s[i]=ch;
i++;
}
}
l=strlen(s);
for(i=0;i<l;i++)
{
if(s[i]=='.')
p=i;
if(s[i]=='e'||s[i]=='E')
e=i;
}
if(p==0)
{
printf("数据错误:无小数点!");
exit(0);
}
if(e==0||e==l)
{
printf("数据错误:无指数标记!");
exit(0);
}
x=0;
for(i=0;i<p;i++)
x=x*10+s[i]-'0';
y=0;
for(i=e-1;i>p;i--)
y=y/10.0+s[i]-'0';
z_=0;
z=1;
if(s[e+1]=='-')
{
for(i=e+2;i<l;i++)
z_=z_*10+s[i]-'0';
for(i=0;i<z_;i++)
z/=10;
}
else
{
for(i=e+1;i<l;i++)
z_=z_*10+s[i]-'0';
for(i=0;i<z_;i++)
z*=10;
}
final=(x+y)*z;
printf("%e\n",final);
}
PS:程序中我用'~'代替了EOF,因为EOF我不会用。还有,我的编译调试环境是vc6