算法——花朵数

花朵数:花朵数是指一个数的各个位数的该数的位数次方相加等于该数本身

例:153=1^3+5^3+3^3

基本思路:花朵数需要各个位数 我们就需要将各个位数的值求到,并且存放在一个数组
中方便下次使用

得到了数组后我们根据花朵数的特性判断其是否为花朵数

如果是花朵数我们还可以判断它是什么样的花朵(有几片花瓣 也就是几位数)

#include
#include
#define N 10 
void flower(int n)
{
int i; //i用于数组的循环

int m=n; //用m记录n的数值

double total=0; 

int record=0;  // 记录位数

int arr[N]; // 创建数组记录各个位数

while(n!=0) //将各个位数 存放在数组中
{
arr[record]=n%10;
n=n/10;
record++;
}

printf("这是一个%d位的数\n",record);

for(i=0;i{
total=total+pow(arr[i],record);
}

if(total==m) //判断是否为花朵数
{
printf("这是一个花朵数\n");

switch(record) //判断是什么样的花朵数

{

case 3: printf("这是水仙花数\n");
break;
case 4: printf("这是虞美人\n");
break;
case 5: printf("这是梅花数\n");
break;
case 6: printf("这是雪花数\n");
break;
default:printf("不知道是什么花\n");
break;
}
}

else
{
printf("这不是花朵数\n");
}
}
int main()
{
int num;

printf("请输入一个数:\n");

scanf("%d",&num);

flower(num);

return 0;
}

你可能感兴趣的:(C语言和算法)