输出所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。 例如,153是一水仙花数,因为153=1³﹢5³﹢3³
思路:
1. 求三位数的范围(循环)
2. 求各位数字("%“丢个位,”/"得个位)
3. 判断各位数字立方和是否等于该数本身(if语句)
程序如下:
#include <stdio.h>
bool IsFlower(int n)
{
int sum = 0;
int m = n;
int tmp;
while(n != 0)
{
tmp = n%10;
sum += tmp*tmp*tmp;
n /= 10;
}
return sum == m;
}
int main()
{
for(int i=100;i<1000;i++)*[s'n'h]:
{
if(IsFlower(i))
{
printf("%d\n",i);
}
}
执行结果:
"%“和”/"在求数字各位数字的应用
注意:
- “/”,整数除以整数,结果仍为整数(例44/10=4,2/10=)
- "%"只能用于整数,不可使用在浮点数
解读
while(n != 0)//当n=0时,此时n已为单个数字,无需继续
{
tmp = n%10;//若为22,求余10可以得到个位2
n /= 10;//n=n/10,若为22,除以10后丢掉各位,并且得到高位
}