【C/C++小练习1】反向输出一个四位数以及打印水仙花数(%和/混合使用的神奇魅力)

这两个问题其实都是同一个问题,或者说用到的知识都是同一个知识,我们一起来看看,首先我们要了解C语言中%和/两个操作符的用法.

第一,% 就是取模操作符,它能求出余数,比方说式子156%10=6这个式子,150%10的结果是0,但是还有个6是余数,所以结果就是6。

第二: /  就是除法操作符,但是在两个整形相除时,会忽略小数部分而保留整数,比如我们上面若是156/10结果是15而不是15.6,除非将两个操作数的任意一个写成浮点数形式计算出来才是小数,比如156.0/10=15.6.

那么我们发现,用%操作符%10可以拿出一个数字的个位数,就像上面156的6,包括1234的4也是一样的道理,用%就可以拿出个位数,这里我们举几个例子:
1.12%10=2

2.17893%10=3

3.1%10=1 ;5%10=5 (需要特别说明,个位数%10就是它本身,因为这就是个位数)

而/操作符则可以去掉一个数的个位数:

1.1234/10=123

2.1/10=0; 5/10=0

了解上述知识后,这两道题就迎刃而解了,我们采用C语言代码来讲解,最后我会放上C++的代码

第一题(链接:反向输出一个四位数_牛客题霸_牛客网

题目:反向输出一个四位数,例如1234,输出4321.

分析:好的,我们要反向输出一个四位数,我们要知道,不管是几位数,三位数四位数都好,它都是由各个位组成的,例如1234就是千位百位十位个位组成的,我们要反向输出它,就是要拿出它的四个位,并且是以4321的顺序拿出来并打印,那么我们就做到了反向输出这个四位数。

方法:我们运用上面的知识,可以知道,要拿出一个位,对数字进行%10操作即可,例如1234%10=4,那么我们就拿出了4这个个位,很好,接下来我们继续拿3这个位,注意,此时若还是对1234进行%操作会很麻烦,因为3在十位的位置,我们无法单独拿出3,怎么办呢?看看上面,我们的/操作符还没出手呢,我们只需要用1234/10=123,就可以把个位的4给丢掉,这时数字变为123,再进行%10的操作就可以把此时的个位3给拿下来,再循环往复………

我们会发现,只要我们不断的进行%10+/10的操作,就可以拿下数字的个位数并在拿完后把它去掉,所以,我们很容易写出如下代码(C代码)。

用while循环来实现,先打印1234%10=4,然后/10把个位数(也即4)给去掉,再循环操作,while的条件可以直接写成a,是因为在1234的234都被去掉后,剩下的a=1,此时a/=a=1/10=0,循环刚好停止,也就是说当我们的数字被“削”成只剩一位数的时候,此时进行/10就是0,刚好作为我们停止循环的条件,岂不美哉? 

以下为C++代码: 

第二题(链接:[编程入门]水仙花数判断 - C语言网 (dotcpp.com)

题目:

打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。 

分析:根据公式153=1^3+5^3+3^3可知,我们只需要拿出三位数的每一位求立方和即可,和上面的思路不约而同。

方法:比如123%10拿出3,123/10=12去掉3,然后12%10=2拿出2……,咋这么啰嗦,直接上代码!

C++代码一模一样。

这就是%和/的神奇作用,有任何不懂欢迎私聊留言,加油朋友们,一起进步一起努力,如有错误,也请斧正,万分感谢!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值