1.统计数字位数
统计数字位数,我们首先想到的是除数。不就是对目标数字除以10,丢弃它的个位,直到目标数字为0结束,我们知道丢几次不就有几个个位也就知道位数了。利用循环我们就可以很简单的做出这道题。
int Count(long long num) {
int n = 0;
do {
n++;
num/=10;
} while (num !=0);
return n;
}
如果还需要考虑0和负数的情况,就加个if语句判断如何再把负数转化为正数重复上面的操作就可以。
int Count(long long num) {
int n = 0;
long long tmp = num;
if (num > 0) {
do {
n++;
tmp /= 10;
} while (tmp != 0);
return n;
}
if (num == 0) {
return 1;}
if (num < 0) {
num = -num;
do {
n++;
tmp /= 10;
} while (tmp != 0);
return n;
}
}
2.数字逆序输出
顺序输出则是对数字取余,对数字取余就是除以几剩下的余数。那我们也可以对目标数字取余10,得到个位把个位输出,然后再丢弃个位再取余,也是利用循环我们可以很好的完成这个代码。
int main()
{
long long x;
scanf("%lld", &x);
if (x < 0)
{
printf("-");
x = -x;
}
if (x == 0)
{
printf("0\n");
return 0;
}
while (x != 0)
{
printf("%d ", x % 10);
x /= 10;
}
return 0;
}
3.数字顺序输出
丢弃个位和得到个位大家都明白了嘛,那逆序输出不就是丢高位和得高位吗?大家可以举一反三自己写出逆序输出的代码吗?我把代码放在下面,大家写出来可以对一下,如果有不同意见可以评论区讨论。
int main()
{
long long n;
scanf("%lld", &n);
if (n < 0)
{
printf("-");
n = -n;
}
else if (n == 0)
{
printf("0");
return 0;
}
int count = 0;
long long m = n;
while (m != 0)
{
count++;
m /= 10;
}
int power = pow(10, count - 1);
while (n != 0)
{
printf("%d,", n / power);
n %= power;
power /= 10;
}
return 0;
}