判断一个数是不是水仙花数
// 功能:判断输入 nValue 是否为水仙花数
// 输入: nValue为正整数
// 输出:无
// 返回:如果输入为水仙花数,返回1,否则返回0
// 例如:输入153会返回1
#include <stdlib.h>
#include <stdio.h>
unsigned int IsDaffodilNum(unsigned int nValue)
{
unsigned int Value=nValue;
int count=0;
int a[10]={0};
int i=0;
int sum=0;
int temp=1;
if(Value<100)//确认是否是三位数以上
{
return 0;
}
else
{
while(Value>9)//利用循环找出这个数为几位数
{
a[i]=Value%10;
Value=Value/10;
i++;
}
a[i]=Value;//把个数为放入数组
count=i+1;
for(int j=0;j<count;j++)//利用循环把每位数相乘count次,在加起来
{
for(int k=0;k<count;k++)
{
temp=temp*a[j];
}
sum=sum+temp;
temp=1;//要记得复位不然temp会越来越大
}
if(sum==nValue)
{
return 1;
}
}
return 0;
}
void main()
{
unsigned int Value;
printf("请输入要验证的数字:\n");
scanf_s("%d",&Value);
if(IsDaffodilNum(Value))
{
printf("%d是水仙花数\n",Value);
}
else
{
printf("%d不是水仙花数\n",Value);
}
getchar();
getchar();
}
还没有评论,来说两句吧...