百位十位个位是怎么定义的?

来源:4-9 循环结构之for循环(二)

weixin_精慕门3524507

2019-11-29 14:16

为什么?百位是num%100(这个得出来不是1吗)   十位是(num%100)/10(这个得出来不是0吗)    个位是num%10(这个得出来不也是0吗)    谁能解释一下到底怎么定义这个百十个位的?感谢!

写回答 关注

2回答

  • weixin_慕仰7077809
    2020-02-02 13:33:16

    首先咱了解一下模运算(%),意思是取余,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,剩下的余数就是个位了。

    如此解说,可理解?

  • 坏笑_aichichuan666
    2019-11-29 15:46:15


    首先:所谓“水仙花数”是指一个三位数,所以要拿到最小的三位数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

    个人理解希望对你有所帮助。

    小白萌新up

    我可不可以理解为因为是三位数,第一个三位数是100,所以num=100,num<1000,至于num++,意思是从100开始,101,102,一直到999,按照这个顺序来算所有三位数,只要符合下面的hd,td,sd这个公式的,就都是所求的num

    2020-02-18 22:21:13

    共 2 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题