请教为什么第五位数不准确
有这么一道题,给一个不多于5位的正整数,要求1、求出它是几位数。2、分别输出每一位数字。我费劲巴拉凑出一段代码,但是出现问题了。
请教1、为什么第五位数字(就是个位数,也就是里面的five变量),输出的时候不对,比如我输入12345,输出是12344,但是输入56874,输出是正确的,也就是它不一定是什么数字,请帮我讲解一下。
2、请教有没有更好的解题思路,如果前辈们有时间就给俺讲讲。
下面是我写的代码,变量名很幼稚,请尽情笑话我:
#include<stdio.h>
main()
{
float a;
int one,two,three,four,five;
scanf("%f",&a);
while (a > 99999 || a < 0)
{
printf("重新输入\n");
scanf("%f",&a);
}
if ( 99999 - a <= 89999 && 99999 -a >=0)
{
printf("这是个五位数");
one = a / 10000;
two = (a / 10000 - one) *10;
three = ((a / 10000 - one) *10 - two) * 10;
four = (((a / 10000 - one) *10 - two) * 10 - three) * 10;
five = ((((a / 10000 - one) *10 - two) * 10 - three) * 10 - four) * 10;
printf("%d\t%d\t%d\t%d\t%d\t",one,two,three,four,five);
}
if ( 99999 - a >= 90000 && 99999 -a <= 98999)
printf("这是个四位数\n");
if (99999 - a >= 99000 && 99999 - a <=99899)
printf("三位数");
if ( 99999 -a >=99900 && 99999 -a <= 99989)
printf("二位数");
if (99999 -a >=99990 && 99999- a <= 99999)
printf("一位数");
}