数的形式类似于:123.45。
一个字符一个字符地读入,然后将其拼接成数。
关键是整数部分利用形如123=(1*10+2)*10+3的表达方法,小数部分则为0.456=4*0.1+5*0.01。
#include <stdio.h>
#define radix 10
int main(void)
{
char ch;
int n = 0; //保存整数部分数值
float f = 0; //保存小数部分数值
//滤掉前导空白字符
printf("Please input a number:\n");
do
{
ch = getchar();
} while (ch < '0' || ch > '9');
//处理整数部分
while (ch >= '0' && ch <= '9')
{
n = n * 10 + ch - '0';
ch = getchar();
}
//处理小数部分
if (ch == '.')
ch = getchar();
float w = 1.0 / radix; //小数部分各位权重
while (ch >= '0' && ch <= '9')
{
f += w * (ch - '0');
ch = getchar();
w /= 10;
}
//打印结果
printf("The number is: %f\n", n + f);
return 0;
}