编写程序,打印水仙花数。要求写一个函数,用于判断一个数是否为“水仙花数”。调用该函数打印出所有水仙花数。 所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。
【输入形式】
输入仅一行,输入2个数,最小三位数和最大三位数。
【输出形式】
输出一行,输出所有水仙花数。(数据间隔一个空格)
【样例输入】100 400
【样例输出】153 370 371
【答案】
#include<stdio.h>
#include<math.h>
int main()
{
int lei(int x);
int m,n,i,j;
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
{
j=lei(i);
if(j==i)
printf("%d ",lei(i));
}
return 0;
}
int lei(int x)
{
int p,q,t,s;
p=pow((x/100),3);
q=pow(((x/10)%10),3);
t=pow((x%10),3);
s=p+q+t;
return s;
}
【解析】此题我们应用了函数相关的知识点,同时我们也用到了pow数学函数。在此题中计算立方的话也可以列出来相乘,但是如果遇到了十次方甚至更大的次方时我们用pow函数会特别方便。我们要注意的是用到数学函数时,我们要在上方开头使用include<math.h.>命令行。
(解析为作者本人见解,仅供参考。如有问题,请联系作者本人或在评论区纠正讨论,谢谢大家)