一道字符串问题求助
输入字符串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; }