c语言怎么编写水仙花数?

如题所述

方法:先弄懂什么是水仙花数::
水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。
3位水仙花数————先定义3个数其中一个为1--9;2个为0--9;(用for循环)
再用如果a定义为1--9那么用100*a来表示百位;如果b或者c定义是0--9那么用10*b或者10*c来表示十位;那么下面用c或者b来表示个位;
if(100*a+10*b+c==a*a*a+b*b+c) 如果满足这个条件那么:输出的printf("%d%d%d",a,b,c)就是3位数的水仙花数:

4位水仙花数方法同上:

刚写的:调试过了
#include <stdio.h>
int main(void)
{
int a,b,c,d;
system("cls");
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(d=0;d<=9;d++)
if(1000*a+100*b+10*c+d==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
printf("%d%d%d%d\n",a,b,c,d);
getch();
}

或者这样:
#include <stdio.h>
int main(void)
{
int a,b,c,d;
system("cls");
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
for(d=0;d<=9;d++)
if(1000*a+100*b+10*c+d==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
printf("%d%d%d%d\n",a,b,c,d);
}
getch();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-09
水仙花数:是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
参考代码:
#include<stdio.h>int fun(int n){//判断3位数n是否是水仙花数 int q,b,g; q=n/100;//求出千位数 b=(n/10)%10;//求出百位数 g=n%10;//求出个位数 if(q*q*q+b*b*b+g*g*g==n) return 1; return 0;} int main(){ int i; for(i=100;i<1000;i++) if(fun(i)) printf("%d\n",i); return(0);}/*运行结果:153370371407*/
第2个回答  2018-03-09
#include<stdio.h>
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");
}
第3个回答  2018-03-09
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main()
{
int i, a, b, c, d, sum;

for(i = 100; i < 10000; i++)
{
a = i % 10;
b = i / 10 % 10;
c = i / 100 % 10;
d = i / 1000 % 10;
if(d)
sum = pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4);
else
sum = pow(a,3)+pow(b,3)+pow(c,3);
if(sum == i)
printf("%d\n", i);
}
system("PAUSE");
return 0;
}
相似回答