当前位置: 代码迷 >> C语言 >> [求助]
  详细解决方案

[求助]

热度:128   发布时间:2005-05-29 18:26:00.0
[求助]

将指数形式的浮点数字符串转换成双精度浮点值.要求将转换定义成函数.列如 输入"-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;
我没仔细看
可能是这句有问题

----------------解决方案--------------------------------------------------------
  相关解决方案