将指数形式的浮点数字符串转换成双精度浮点值.要求将转换定义成函数.列如 输入"-123456.789e-2",结果为浮点数 -1234.56789. (要求考虑数的正负和阶码的正负) #include<stdio.h>
#define SIZE 100
void change(char s[])
{
int i,sign,flag,m,k,p,j;
i=sign=flag=k=p=j=0;
m=1;
double n=0.0; /*老是这里有问题*/
(s[i]=='-')?(i+=1,sign=-1):i;
for(;s[i]!='\0';i++) {
if(s[i]>='0'&&s[i]<='9'){
if(k==0) n=n*10+s[i]-'0'; /*还说这里的n没有定义*/
else {if (p==-1)j+=s[i]-'0';
else j-=s[i]-'0';
}
}
if(s[i]=='.')flag=1;
if(s[i]=='e'||s[i]=='E')
{flag=0;
k=1;
}
if(flag) j++;
if(k==1&&s[++i]=='-')p=-1;
}
if(sign==-1)n=-n;
if(j>0){
for(i=1,m=1;i<=j;i++)m*=10;
printf("Result=%*f\n",j,n/m);
}
else if(!j) printf("Result=%f\n",n/m);
else peintf("Result=%1f\n",n/m);
}
void main()
{
char s[SIZE];
printf("Input a float:\n");
scanf("%s",s);
change(s);
}
偶很是郁闷,高拉好半天 还是通不过!~!~ 恳请各位大哥哥 帮帮忙!~!小弟谢谢拉~!~~!
[此贴子已经被作者于2005-5-29 18:28:29编辑过]
----------------解决方案--------------------------------------------------------
(s[i]=='-')?(i+=1,sign=-1):i;
我没仔细看
可能是这句有问题
----------------解决方案--------------------------------------------------------