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

 我来答
yesokooo
2018-03-09 · TA获得超过123个赞
知道答主
回答量:63
采纳率:0%
帮助的人:71.3万
展开全部
方法:先弄懂什么是水仙花数::
水仙花数是指一个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();
}
985967518
2018-03-09 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109866
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部
水仙花数:是指一个 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*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
真实的幻术师
2018-03-09 · TA获得超过8170个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:154万
展开全部
#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");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
作业枪手
2018-03-09
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式