#include<stdio.h>
void counter(int x) //求数的有几位数
{
int count = 0;
while (x)
{
x /= 10;
count++; //定义一个初始化为0的数记录,把收到的数值每次除10直到为0停止,每次除10后记录值加1
}
printf("%d\n",count);
}
void print(int y) //正序按位输出
{
int mask, num,num1,num2;
num = y;
mask = 1;
num2 = y; //先用个初始化为1的数,把收到的数字每次除10直到为0,然后每次初始化的值都乘10记录
while (num>9)
{
num /= 10;
mask *= 10;
}
do
{
num1 = num2 / mask; //然后把数除以上面记录的数以获取首位数
printf("%d", num1);
printf(" ");
num2 %= mask; //取下后几位数然后重复计算直到记录值为0
mask /= 10; //除10以一位一位的形式输出剩下的位数
} while (mask>0);
printf("\n");
}
void queue(int z) //倒序输出
{
int print, num;
do
{
num = z; //取模输出最后一位
num = z % 10;
z /= 10; //把前面没被取模的留作下一次使用
printf("%d", num);
} while (z);
printf("\n");
}
int main()
{
int num,num1,num2,num3;
num1 = 0;
num3 = 0;
scanf("%d", &num);
counter(num);
print(num);
queue(num);
return 0;
}
原文:https://www.cnblogs.com/old-horse/p/12482155.html