一道字符串问题求助
输入字符串aasjkhjka123wkedklw57658.2nvjfs-3782.83输出所有数字相加,包括小数点和负号,相邻数字算是一起的,求解。。。。。。
程序代码:#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int i,t,lgth,flgfloat=0,flgsign=0;
double data=0,sum=0;
char str[100]="\0";
scanf("%s",str);
lgth=(int)strlen(str);
for(i=0;i<=lgth;i++)
{
if(str[i]=='-')
flgsign=-1;
else if(str[i]=='.')
flgfloat=1; //flgfloat:若为0,则此数为整数,若为1,则处理的是小数点后面第一个数子,若为2,处理其余数字
else if(str[i]>='0' && str[i]<='9')
{
if(flgfloat==0)
data=data*10+str[i]-'0';
else if(flgfloat==1)
{
t=1;
data=data+(str[i]-'0')*(1.0/(pow(10,t)));
flgfloat=2;
}
else if(flgfloat==2)
{
t++;
data=data+(str[i]-'0')*(1.0/(pow(10,t)));
}
}
else
{
if(flgsign==-1)sum=sum-data;
else sum=sum+data;
data=0;
flgsign=0; flgfloat=0; t=0;
}
}
printf("%f\n",sum);
return 0;
}