#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <malloc.h>
#define MAX_STR_LEN 12
double
strToDouble(
char
str[])
{
if
(str[0]==
'\0'
)
return
0;
int
i,j=0,n,k=0,h=0,flag=0;
double
sum=0,m=0.1,sum1=0,sum2;
char
c[20],d;
n=
strlen
(str);
for
(i=0;i<n;i++)
{
if
(
isdigit
(str[i]))
{sum=sum*10+str[i]-
'0'
;flag++;}
if
(str[i]==
'.'
) {i++;
break
;}
}
for
(;i<n;i++)
{
if
(str[i]==
'-'
||str[i]==
'+'
) c[j++]=str[i];
if
(
isdigit
(str[i]))
{sum1+=(str[i]-
'0'
)*m;m/=10;}
}
sum2=sum+sum1;
for
(i=0;i<n;i++)
{
if
(
isdigit
(str[i]))
break
;
else
if
(str[i]==
'+'
||str[i]==
'-'
)
{
if
(str[i]==
'-'
) sum2=-sum2;
break
; }
}
return
sum2;
}
int
main()
{
char
s[MAX_STR_LEN];
while
(
gets
(s) != NULL)
printf
(
"%lg\n"
, strToDouble(s));
return
0;
}
C语言