求大神。我在算1-1000的水仙花数 c语言

 我来答
laughlee7468
推荐于2017-09-28 · TA获得超过2004个赞
知道小有建树答主
回答量:541
采纳率:100%
帮助的人:676万
展开全部
你的程序存在的几个问题
1 水仙花数的定义没搞清楚,水仙花数是一个n位数(n≥3),该数的各个数位上的数字的n次幂之和等于该数本身。
2 根据定义你的第一个while和第二个while循环都是多余的。但a的初始值应该从100开始。
3 c语言中求n次幂不是用"^"运算符,可以看到你的程序中求b的3次方表示为b^3,求x的n次方一般用函数实现,可以是自定义函数,也可以用库函数pow,但pow函数是浮点函数,可能会有误差,对于整型运算,不建议用pow函数。对于3这种次数较小的幂可以直接用连乘表示,如b*b*b。
因此,对于你的程序,我将尽可能较少的修改可如下
#include <stdio.h>
void main( )
{
int a, b, c, d;
a = 100;
while((a-1000)<0)
{
b=a/100;
c=(a-100*b)/10;
d=a-100*b-10*c;
if(b*b*b+c*c*c+d*d*d==a)
printf("%d\n", a);
a++;
}
prinrf("end\n");
}
追问
太谢谢啦。我昨出去回复晚了不好意思
我以后有问题还可以找您么
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郑大铺
2014-03-08 · TA获得超过176个赞
知道答主
回答量:74
采纳率:0%
帮助的人:40.7万
展开全部
#include <stdio.h>
#include <math.h>
void main()
{
int n,a,b,c,d;
for(n=100;n<1000;n++)
{
a=n/100;
b=n/10%10;
c=n%10;
d=(int)pow(a,3)+(int)pow(b,3)+(int)pow(c,3);
if(n==d)
printf("%5d",n);
}
printf("\n");
}

以运行过,没问题。
望采纳,谢谢!!!
更多追问追答
追问
我的那个那里不对。。。我想问下大神
追答
你再考虑一下问题的吧,抓住核心,以最简单的结构来设计算法,,
你的方法太复杂了
只要把他的各个数字分离开,再调用一个pow()函数就解决了
函数pow(x,y)功能是求x的y次方
c语言要多读程序,多写程序,你做的不错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式