百位十位个位是怎么定义的?
为什么?百位是num%100(这个得出来不是1吗) 十位是(num%100)/10(这个得出来不是0吗) 个位是num%10(这个得出来不也是0吗) 谁能解释一下到底怎么定义这个百十个位的?感谢!
为什么?百位是num%100(这个得出来不是1吗) 十位是(num%100)/10(这个得出来不是0吗) 个位是num%10(这个得出来不也是0吗) 谁能解释一下到底怎么定义这个百十个位的?感谢!
2019-11-29
首先咱了解一下模运算(%),意思是取余,10%4=2;(理解10除以4,余数是2),然后int类型会将一个数字强制转换成整数,如(int)(1.2)=1,(int)(8.9)=8,也就是直接砍掉小数部分,保留整数部分。
百位
那么题中要求定位到百位,那么也就是给定任意一个三位数(已给定num是整型int,只保存整数),那么任意一个三位数除以100,得到的数就是百位了(举例288/100=2.88,取整型后保存为2,以此类推,百位数就可以定位了)
十位
然后十位,这就用到模运算了,给定一个整型的三位数,首先要去掉百位,如三位数是789,那么789%100,根据模运算,结果就是89,好了,余数出来了已经排除掉了百位,那就好办,同取百位一样,89/10=8.9,由于num是整型,那么保存后8.9也就变成了8;
个位
再说个位,就更好办了。有了上边百位十位的算法,给定一个三位数,各位就直接对10进行模运算就行了,因为百位和十位都能整除10,剩下的余数就是个位了。
如此解说,可理解?
首先:所谓“水仙花数”是指一个三位数,所以要拿到最小的三位数100及最大的三位数
int类型不四舍五入,只保留整数部分。前面的课程有提到。
所以num=100;num<1000;num++ 这样就拿到了我们想要范围所有的三位数
百位数直接除以100得到的数不会四舍五入,直接保存整数部分,百位数拿到。
十位数同理,但是要先拿到这个十位数 除去百位数就是我们要的数 用%取余 拿到十位数后同理只不过是除以10,十位数拿到。
个位数,除去百位、十位数就是个位数,num为三位数那么百位、十位是可以整除10的剩下的余数就是我们要的个位数。
假设num = 371
百位数:num/100=3.71 那么百位数为3(不会四舍五入直接保存为3)
十位数:(num%100)/10 num%100 余数为71 71/10 =7.1 保存为7
个位数:num%10=1
个人理解希望对你有所帮助。
举报