C语言题目:如何判断一个整数有几位,并且顺序依次输出其各位的数字
问题一:如何判断整数的位数?C语言中,我们知道整数每次除以10,就会丢弃其最低位的那个数字,例如:123/10=12 -> 丢弃了数字3
12/10=1 ->丢弃了2
1/10=0 ->丢弃1
最终等于0,做了3次,因此它的位数为3
按照这个思想,当我们给整数n赋值后,便每次使n/=10,并设立一个计数器i,直至结果等于0,最终i的值就是其位数;
代码实现:
int i = 1;
long long n;
scanf("%lld", &n);
long long m = n;
long long t = n;
while (n / 10 != 0)
{
n = n / 10;
i++;
}
printf("n其位数为:%dn", i);
这里最好n设置成long long 类型,这样的话可以测得较大位数的数字,笔者在这里试了一下,最大能测得的位数为19位;问题二:如何顺序输出其各位数字?
这里我直接用一幅图描述下:
顺便解释下pow()函数用法,例如:2的3次方->2^3,可以用到pow(2,3),其返回值便是2的3次方的值;
代码实现:
int t=n;//输入的值赋值给t;
int z = pow(10, i-1);
while (z != 0)
{
printf("%d ",t/z);//输出最高位数字
t %= z;//舍弃最高位
z /= 10;
}
实例:
以上便是对本次问题的求解,本人第一次写博客,用来记录自己C语言的学习过程,如有哪点错误,还请各位多多指正。



