昆明到罗茨过路费:C程序算法

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 02:31:58
怎样求一个任意数是几位数.
嗯,我也是像你们那样子编的,不过,它只能对整数起作用,对double类型的数就会出错,请哪位仁兄告诉我对一个任意数(不论类型)都适用的算法!!!我用强制转换也要出错!

简化一下算法呵呵,由楼上的启发:

main()
{int i=0,x;
scanf("%d",&x):/*输入你要判断的数*/

while(x)
{
x/=10; /*每次x都除以10,直到1位数字除以10变0了。*/
++i; /*每除1次,i位数+1*/
}
printf("%d\n",i==0?1:i); /*打印,当i为0的时候其实是1位数*/
}

main()
{int j,k=0,i=1,x;
char tx;
scanf("%d",&x):/*输入你要判断的数*/
while(tx<>"n"||tx<>"N")/*tx=n或N时退出*/
{
while()
{
i=i*10;/*i每次循环乘10*/
for(j=0;j<i;j=j+10)
{k++;
if(x>i/10&&x<i)/*第一次i为10,i-10为0,满足就为1位数,依次类推*/
{printf("%d位数",k);
scanf("%c",&n);
}
}
}
}
}

先include <math.h>
然后调用floor(log10(n))+1就可以算出n的位数

把这个数专成字符串数组,取其长度