#include <iostream>
#include <malloc.h>
#include <cstdio>
using namespace std;
#define MaxLen 100
double atoe(char *s);
int main(){
char *s;
s = (char *)malloc(MaxLen);
printf("输入一个数:");
gets(s);
printf("对应的数:%lf\n\n",atoe(s));
return 0;
}
double atoe(char *s){
double val,power;
int sign,e,i;
char c;
for(;*s==' ' || *s=='\n' || *s=='\t';s++);//跳过空格
sign = 1;
if(*s == '+' || *s == '-') sign = (*s++ == '+') ? 1 : -1;
for(val = 0;*s>='0' && *s<='9';s++) val = val*10 + (*s-'\0'); //数字字符转换
if(*s == '.'){
s++;
for(power = 1;*s>='0' && *s<='9';s++){
val = val*10+*s-'0';
power *= 10;
}
val = val / power;
}
if(*s == 'e' || *s == 'E'){
s++;
if(*s == '+' || *s == '-') c = *s++;
else c = '+';
for(e=0;*s>='0' && *s<='9';s++) e = e*10 +(*s - '0');
if(c == '+') for(i=e;i>0;i--) val *= 10;
else for(i=e;i>0;i--) val /= 10;
}
//printf("%f\n",val);
//printf("%d\n",sign);
return(val*sign);
}
todo 未通过 程序设计 p40