储备知识
- x % 10:得到x的个位数
- x / 10:舍去x的个位数
逆序分解
法一:700逆序分解后是7
while ( x > 0 ) {
digit = x % 10 ; /*digit是x的个位数*/
ret =ret * 10 + digit ; /*ret是整数逆序的结果*/
x / = 10 ;
}
法二:700逆序分解后是007
while ( x > 0 ) {
digit = x % 10;
printf ( "%d", digit );
x / = 10;
}
正序分解
int t = x;
//得到mask
while ( t > 9 ) {
t / = 10;
mask * = 10; /*若x=1234,则mask=1000*/
}
//正序分解
do {
int d = x / mask; /*d是x的首位数*/
if( mask > 9 ) printf(" ");
x % = mask; /*舍去x的首位数*/
} while( mask > 0); /*循环条件只能是mask>0,而不能是x>0*/
注意事项:
== 循环条件只能是mask>0!==如果循环条件变成x>0,那么当x的个位数为0时,就不会输出个位数了。举个例子,若x=1230,输出结果变成1 2 3。