我想写一个输出小数点后的数字个数,如:0.1,数位就是1;1.22的数位就是2这样!我写成这样(如下),但是输出时,只有整数和小数的整数部分为0,小数部分只有1个数字的数字个数.(如:1;2;3;0.1;0.2),其他的都不能输出正确结果!请大家看看哪里出错了? 最好说明为什么和如何修改!谢谢!
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float i,j=0;
printf("Please enter a number to count the sites of the number !\nThe number is:");
scanf("%f",&i);
loop:
if(i<1 && i!=0)
{
for(j=0;i<1;j++)
{
if(i!=0)
{
i=i/0.1;
i=i-(int)i;
}
else
break;
}
}
else if(i>1 && i!=0)
{
i=i-(int)i;
goto loop;
}
printf("The result is %f\n",j);
system("PAUSE");
return 0;
}
參考答案:#include "iostream"
using namespace std;
void main()
{
float i;
int j=0;
cout<<"Please enter a number to count the sites of the number !"<<endl;
cout<<"The number is:";
cin>>i;
while(i)
{
if(i-int(i)){/*do no-op*/}
else{i=10*i-int(10*i);j++;}
}
cout<<"该数字含有"<<j<<"位小数"<<endl;
}
__________
我觉得实现这个功能用char型来存储输入的值或许操作起来能更方便些。