再请大家帮忙优化个程序,将只含数字和小数点字符串转化为实型数!!
程序代码:#include<stdio.h>
#include<math.h>
int main()
{
char s[30];
int i,j=0,k,a,b,c,e=0,f=0,g;
double sum=0;
k=1;
scanf("%s",s);
for(i=0;s[i]!='\0'&&s[i]!='.'&&s[i]!='-';i++);//求整数位
if(s[0]=='-') return 0;
if(s[i]=='.')
{
for(j=i+1;s[j]!='\0';j++)//求小数位
{
sum=sum+(s[j]-48)*pow(1.0/10,k);//求出小数位部分,将ascii的(0~9)转换int的(0~9)
k++;
}
}
g=0;
a=i-1;
for(;a>=0;a--)
{
sum=sum+(s[a]-48)*pow(10,g);//求整数部
g++;
}
for(b=0;b<i;b++)
{
if(s[b]!='0')break;
e++;
}
f=i+1;
if(e==i)
{
if(j!=0)
{
for(c=i+1;c<j;c++)
{
if(s[c]!='0')break;
f++;
}
if(f==j) return 0;//如果小数整数部都为0结束循环
else
{
printf("%s\n",s);
printf("%f",sum);
}
}
else return 0;//如果只输入整数部分且为0结束循环
}
else
{
printf("%s\n",s);
printf("%f",sum);
}
return 0;
}昨天看了一个帖子浮点数如何可以比较大小且原样输出,所以就马马虎虎编了这个将只含数字和小数点字符串转化为其他变量程序,但是好像超麻烦所以再来请教一下大大们改一下!!!









