7.用函数实现求水仙花数:一个三位数它的每一位数字的立方和等于该数本身 (eg:3^3+7^3+0^3=370)
代码如下:
#include<stdio.h>
bool Get_FlowerNum(int num){
int a=0,b=0,c=0;//370/100=3 370-3*100=70 70/10=7 70-7*10=0
a=num/100;
num=num-a*100; //会导致原来的num值发生变化!!!
b=num/10;
c=num-b*10;
int sum=(a*a*a)+(b*b*b)+(c*c*c);
num=a*100+b*10+c*1; //先让num=原来传进来要判断的值再判断
if(num==sum){
return true;
}
return false;
}
int main(){
int num=0;
printf("请输入一个三位数:\n");
scanf("%d",&num);
if(Get_FlowerNum(num)){
printf("%d是水仙花数!\n",num);
}
else printf("%d不是水仙花数!\n",num);
return 0;
}
代码实现如下:
ps:严格的讲,水仙花数只能为三位数!
附加题:输出100到1000的水仙花数
代码如下:(在上一个代码稍作修改即可)
#include<stdio.h>
bool Get_FlowerNum(int num){
int a=num/100;
num=num-a*100;
int b=num/10;
int c=num-b*10;
int sum=a*a*a+b*b*b+c*c*c;
num=a*100+b*10+c;
if(num==sum){
return true;
}
else return false;
}
int main(){
int i=0;
for(i=100;i<1000;i++){
if(Get_FlowerNum(i)){
printf("%d是水仙花数!\n",i);
}
}
return 0;
}
代码实现如下:
以上即是所有的水仙花数。