作业帮 > 综合 > 作业

请高手给予程序讲解,特别对于if(f){x=x*10+c;} else{y=y+c/t;t=t*10;}}

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 19:20:56
请高手给予程序讲解,特别对于if(f){x=x*10+c;} else{y=y+c/t;t=t*10;}}
double fun(char*s) { double x=0,y=0,t=10; int c,f=1; while(*s) { if(*s=='.') f=0; else { c=*s-'0';
if(f){x=x*10+c;}
else{y=y+c/t;t=t*10;}}
s++;}
return x+y;}
double fun(char*s)
{
double x=0,y=0,t=10;
//t表示小数数字转换为该位等价大小的比例(如在百分位
//则该位等价大小value 为value= c * 0.01,故t = 0.01
int c,f=1; //c表示该位的数字;f=1表示计算整数部分,反之为小数部分
while(*s)
{
if(*s=='.')
f=0;
else
{
c=*s-'0'; //字符转换成数字
if(f)
{
x=x*10+c; //整数部分 = 前一次整数部分大小 * 10 + 该位数字大小
}
else
{
y=y+c/t; //小数部分 = 前一次小数部分大小 + 新读到的位的等值大小
t=t*10;
}
}
s++;
}
return x+y;
}
/*关于整数部分的计算,假设整数部分为321,则计算过程如下:
Step1:value = 3
Step2:value = 3*10+2=32
Step3:value = 32*10+1=321*/