例:给定任意一个三位数,判断这个数是不是水仙花数。
#include<stdio.h>
#include<math.h>
int main()
{
int i,a,b,c,d;
printf("请输入一个三位数:");
scanf("%d",&i);
a = i/100; //百位
b = i/10%10; //十位
c = i%10; //个位
d = pow(a,3)+pow(b,3)+pow(c,3);
if(d==i)
printf("%d是水仙花数。\n",i);
else
printf("%d不是水仙花数。\n",i);
return 0;
}
运行结果:
?在这个基础上,还可以加上一个循环,使的直到这个数是水仙花数为止才退出循环。
#include<stdio.h>
#include<math.h>
int main()
{
int i,a,b,c,d;
do{
printf("请输入一个三位数:");
scanf("%d",&i);
a = i/100; //百位
b = i/10%10; //十位
c = i%10; //个位
d = pow(a,3)+pow(b,3)+pow(c,3);
if(d==i)
printf("%d是水仙花数。\n",i);
else
printf("%d不是水仙花数。\n",i);
}while(d!=i);
return 0;
}
运行结果:
?再将本题难度升级一下,打印出100~1000内的所有水仙花数。
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,d;
for(int i=100;i<=999;i++)
{
a = i/100; //百位
b = i/10%10; //十位
c = i%10; //个位
d = pow(a,3)+pow(b,3)+pow(c,3);
if(d==i)
printf("%d是水仙花数。\n",i);
}
return 0;
}
运行结果:
|