1 #include<stdio.h> 2 int main() 3 { 4 int n; // 用于获取用户输入的数 5 int tag = 0; // 用于输出 6 printf("please input 1 integer: "); 7 scanf_s("%d", &n); 8 9 if ( n >= 0 && n < 100000 ) 10 { 11 while (n != 0) 12 { 13 tag = n % 10; 14 printf("%d", tag); 15 n /= 10; 16 } 17 } 18 else { 19 printf("error!"); 20 } 21 }
看看正确的打开方式
举个栗子:假设我们输入123, 0 <= n= 123 < 100000,
第一次试图进入:n = 123 != 0, true >>> tag = n % 10 = 123 % 10 = 3 //取出个位,即原数 (n = 123) 的最后一位 3 printf("%d",tag); 输出3 //注意,此时 3 原数的 最后一位 变成了 第一位, 此时 tag = 3 n /= 10 = 123 / 10 = 12; //此时我们利用强转的的特性,直接干掉了 原数( n = 123 ) 的个位数 3 // 此时原数整体向左挪了 一位,原百位1,就变成了十位1,原十位2,变成了个位2,( 至于原个位,已经被我们丢掉了 )
第二次试图进入:n = 12 != 0, true >>> tag = n % 10 = 12 % 10 = 2 //取出个位,即原数 ( n = 123) 的倒数第二位2 printf("%d",tag); 输出2 //注意,此时 2 由原数的 倒数第二位 变成了 第二位, 此时 tag = 2 n /= 10 = 12 / 10 = 1; //此时我们利用强转的的特性,直接干掉了 原数( n = 123 ) 的十位数 2 // 此时原数整体向左挪了 两位,原百位1,就变成了个位1,( 至于原十位和个位,已经被我们丢掉了 )
第三次试图进入:n = 1 != 0, true >>> tag = n % 10 = 1 % 10 = 1 //取出个位,即原数 ( n = 123) 的倒数第三位1 printf("%d",tag); 输出1 //注意,此时 1 由原数的 倒数第三位 变成了 第三位, 此时 tag = 1 n /= 10 = 1 / 10 = 0; //此时我们利用强转的的特性,直接干掉了 原数( n = 123 ) 的百位数 1 // 此时原数整体向左挪了 三位,( 至于原百位,十位,个位,已经被我们丢掉了 )
第四次试图进入:n = 0 != 0, False >!>!>! 但此时已经输出了 321,这题跟之前的的回文数类似,但回文数需要通过乘法进行累加,而这题,我们直接输出即可