问题 问答题

[说明]
以下C程序实现了将字符串转化为浮点数的功能。例如字符串“1234567”转化为浮点数1234567;字符串“100.02035”转化为浮点数100.02035;字符串“-100.02035”转化为浮点数-100.02035。程序中的部分变量的含义如表9-5。
表9-5

变量名含 义
   intpart   字符串转化为浮点数后的整数部分
   doublepart   字符串转化为浮点数后的小数部分
   kdouble   记录小数部分的阶次
   resoult   字符串转化为浮点数后的结果
   psign   字符串转化为浮点数后的符号标识
[C程序]
double StrToDouble(char*s)
{
char hexch[]="0123456789";
int i,j,psign=1;
DWORD n,k,intpart=0;
double doublepart=0,kdouble,resoult;
char ch;
if (*s==’.’
{
(1) ;
(2) ;
}
char*s1=s,*temp=NULL;
temp=strrchr ( s1,’.’ );
if (!temp)
{
k=1; intpart=0;
for (i=strlen (s); i>0;i--)
{
ch=s[i-1];
if (ch>0x3f) ch&=0xDF;
n=0;
for (j=0; j<10; j++)
if ( ch==hexch[j]) n=j;
intpart+= (n*k);
k*=10;
}
}
else
{
s1=temp+1;
kdouble=0.1;
doublepart=0;
for ((3) )
{
ch=s1[i-1];
if (ch>0x3f) ch&=0xDF;
n=0;
for (j=0; j<10; j++ )
if (ch==hexch[j])
n=j;
doublepart+= (n*kdouble);
(4) ;
}
*temp=NULL;
k=1; intpart=0;
for ((5) ;)
{
ch=s[i-1];
if (ch>0x3f) ch&=0xDF;
n=0;
for (j=0; j<10; j++)
if (ch==hexch[j]) n=j;
intpart+= (n*k);
k*=10;
}//end else
}
(6) ;
return resoult;
}

答案

参考答案:

解析:(1)psign=-1 (2)s=(s+1) (3)i=1; i<=strlen (s1); i++ (4)kdouble*=0.1; (5)i=strlen (s); i>0;i- (6)resoult= (intpart+doublepart)*psign 本题实现了数字字符串转换成浮点数的程序设计。程序中含空的语句功能分别是:(1)记录符号。如“-0.01”。(2)将字符串中的“-”号剔除;(3)转换所有小数部分;(4)记录小数点阶数;(5)转换所有整数部分;(6)整合小数和整数部分。

单项选择题
单项选择题