统计位数就是将数字拆分,用的方法则是对这个数除以10,则丢弃了它的个位,
就这样一直除以10,它的位数逐渐少一位。则现在我们就需要在丢弃个位的同时
给统计它的位数count加一。
我以12345为例:
定义位数count初值为0
第一次 12345/10=1234 丢弃个位5 位数count=0+1=1
第二次 1234/10=123 丢弃个位4 位数count=1+1=2
第三次 123/10=12 丢弃个位3 位数count=2+1=3
第四次 12/10=1 丢弃个位2 位数count=3+1=4
第五次 1/10=0 丢弃个位1 位数count=4+1=5
第六次 0/10=0 无个位丢弃,循环结束
由此看出当输入的数最后为0时,循环结束。
代码如下:
#include <stdio.h>
#include <math.h>
int main ()
{
int count=0;
int a;
scanf("%d",&a);
while (a!=0)
{
a/=10;
count+=1;
}
printf("这个数为%d位数\n",count);
}
虽然取多组数据进行测试时,这个代码是正确的,但是如果输入a为0的话,它就会
打印count的初值0,明显错误。对此我用了一个if else 语句进行优化:
#include <stdio.h>
#include <math.h>
int main ()
{
int count=0;
int a;
scanf("%d",&a);
if (a==0)
{
count=1;
printf("这个数为%d位数\n",count);
}
else
{
while (a!=0)
{
a/=10;
count+=1;
}
printf("这个数为%d位数\n",count);
}
}
如果文章有错误或者哪里需要改进还请大佬评论赐教