#include
void main()
{
long int m,s,n; /*定义长整形数字:m,s,n,m存放判断的数字,s存放各位数字之和,n存放中间数字*/
int p; /*定义整形数字,来存放每个位的数字*/
printf("请输入一个整数:");
scanf("%ld",&m);/*输入长整形数字*/
s=0; /*赋予s值为0*/
p=m%10; /*求得m的第一位数字,从各位开始*/
s+=p*p*p;
n=m/10; /*把m数字的第一位去掉,直接除以10*/
while(n!=0) /*当n不等于0时*/
{ p=n%10; /*求的每一位数字*/
s+=p*p*p; /*继续求和*/
n=n/10; } /*继续依次去掉每一位数字*/
if(s==m) printf("是水仙花数\n"); /*最后,如果求得的和等于m,则为水仙花数*/
else printf("不是水仙花数\n");
}
/* PS:上述代码,是输入一个数字,判断是否是水仙花数,如果,想求其他的,可把上述代码移植到其他程序中。经测试,可以使用。*/
/*PS::::如还有不懂,可继续*/
#include
#include
void main()
{
int n,m,s; //n为位数,m为水仙数
int i;
int x,y;
int a[20];
double max=0; //n位数的最大值
double min=0; //n位数的最小值
s=0;
printf("请输入位数:\n");
scanf("%d",&n);
max=pow(10,n)-1;
min=pow(10,n-1);
for(m=min;m<=max;m++)
{
int tmp=m;
s=0;
for(i=0;i
a[i]=tmp%10;
tmp=tmp/10;
s+=pow(a[i],n);
if(tmp==0)
if(s==m)
printf("水仙数:%4d\n",m);
}
}
return 0;
}
C语言经典案例之水仙花数
#include
void
main()
{
int
m,a,b,c,d,p;
printf("所有三位水仙花数为:\n");
for(m=100;m<=999;m++)
{
a=(int)(m/100);
b=(int)((m-100*a)/10);
c=(int)(m-(100*a+10*b));
if(m==a*a*a+b*b*b+c*c*c)
{
p=m;
printf("%d
",p);
}
}
printf("\n");
printf("所有四位水仙花数为:\n");
for(m=1000;m<=9999;m++)
{
a=(int)(m/1000);
b=(int)((m-1000*a)/100);
c=(int)((m-(1000*a+100*b))/10);
d=(int)(m-(1000*a+100*b+10*c));
if(m==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
{
p=m;
printf("%d
",p);
}
}
printf("\n");
}