例题:输入一个整数(可以是正数,负数或者0),要求 :
(1) 求出它是几位数; 1234565678678967867
(2) 分别输出每一位数字.例如123,输出1 2 3;(顺序输出)
(3) 按逆序输出各位数字,例如原数为 321, 应输出 1 2 3(逆序输出)
注意:n = n/10; 丢弃个位
eg:顺序输出三位数s(abc):
百位a = s /100 % 10; 三位除以10的二次方
十位b = s / 10 % 10; 二位除以10的一次方
个位c = s % 10;一位除以10的零次方
得到规律:得到n位需除以10的n-1次方取余。
//计算数字的位数
int main()
{
long long n;
scanf_s("%lld", &n);
int sum = 0;//位数
if (n == 0)
sum = 1;
while (n != 0)//为真,循环继续
{
sum++;
n /= 10;// n = n/10; 丢弃个位
}
printf("%d\n", sum);
return 0;
}
//第二种写法,用do while
int Figures(int a)
{
int b=0;
do {
a = a / 10;
b++;
} while (a != 0);
return b;
}
#include <math.h>
//顺序输出每一位
int main()
{
long long n;
scanf_s("%lld",&n);
long long m = n;
int sum = 0;//位数
if (n == 0)
sum = 1;
while (n != 0)//为真,循环继续
{
sum++;
n /= 10;// n = n/10; 丢弃个位
}
long long power = (long long)pow(10,sum-1);//123,3->10^2
n = m;
while (n != 0)
{
printf("%lld ",n/power);//得到高位并输出
n %= power;
power /= 10;
}
return 0;
}
//逆序输出数字的每一位
int main()
{
long long n;
scanf("%lld",&n);
if (n < 0)
{
printf("-");
n = -n;
}
while (n != 0)
{
printf("%lld ",n%10);//得到个位并输出
n /= 10;//丢弃个位
}
return 0;
}