标签:输出 123 10 原数 此时 tag printf 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。