编程语言
首页 > 编程语言> > 题目:把输入的整数(最多不超过5位)按输入顺序的反方向输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。

题目:把输入的整数(最多不超过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