题目:把输入的整数(最多不超过5位)按输入顺序的反方向输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。
作者:互联网
这题的考点很诡异,不会的看到这种题就 ... ♂上+♂
有点类似于回文数,考点为通过while循环进行取模和取余运算,难度为:1颗星
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,这题跟之前的的回文数类似,但回文数需要通过乘法进行累加,而这题,我们直接输出即可
标签:输出,123,10,原数,此时,tag,printf,54321,输入 来源: https://www.cnblogs.com/Maackia/p/14797616.html