整数分解即,把每一位拆开输出,例如12365,输出结果是1 2 3 6 5。
大概思路:
12365/10000=1
2365/1000=2
365/100=3
65/10=6
5/1=5
这样计算可以得到每一位数。所以需要一个变量,来得到每一次需要除以的10的倍数。
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
int mask = 1;
int t = x;
while ( t>9 ) {
t /= 10;
mask *=10;
}
printf("x=%d, mask=%d\n", x, mask);
do {
int d = x / mask;
printf("%d", d);
if ( mask > 9 ) {
printf(" ");
}
x %= mask;
mask /= 10;
} while ( mask > 0 );
printf("\n");
return 0;
}
先用一个变量t记录x的值,这样就不会导致x的变化,且能得到所需要的10的最高倍数。
只要while大于9就循环,这样的话,如果输入的数是个数,就可以跳过第一个while。
do while中,为了防止最后的个位数带空格,就可以加入if判断,在mask>9的情况才带空格。