c语言编程调用函数求水仙花数

这是一个调用函数求100到999的水仙花数,没有错,但就是运行不出结果,求大师帮我解答,好苦恼。。。... 这是一个调用函数求100到999的水仙花数,没有错,但就是运行不出结果,求大师帮我解答,好苦恼。。。 展开
 我来答
风若远去何人留
推荐于2017-10-10 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450108
专业C/C++软件开发

向TA提问 私信TA
展开全部

水仙花数是指一个 n 位数 ( n≥3 ),每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

所以可以依次通过模除求得每个位上的值,然后做n次幂后相加,再判断是否与本身相等,从而得到是否为水仙花数的结论。

以求所有三位数水仙花数为例,代码如下,其它相似。

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
int cube(const int n){//计算立方。如果是四位则是四次方,以此类推。
return n*n*n;
}
int isNarcissistic(const int n){//计算是否为水仙花数。
int hundreds=n/100;//百位
int tens=n/10-hundreds*10;//十位
int ones=n%10;//个位
return cube(hundreds)+cube(tens)+cube(ones)==n;//如果相等,则为水仙花数。
}
int main(void){
int i;
for(i=100;i<1000;++i){//对所有三位数判断。
if(isNarcissistic(i))//如果是则输出。
printf("%d\n",i);
}
return 0;
}
百度网友424c3bf
2015-05-28 · 超过27用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:24.7万
展开全部
您好,图片并不是很清晰,您能把代码复制下来给我吗?我帮你看看。我修改了一下·~~望采纳
#include<stdio.h>
int main(void)
{
int shuixianhua(int i);
int d,k;
for(k=100;k<=999;k++)
{
d=shuixianhua(k);
if(d==1)
printf("%d\n",k);
}
}
int shuixianhua(int i)
{
int a,b,c;
a=i/100;
b=i/10%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
return 1;
else
return 0;
}
追问
什么代码?不懂

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wchyumo2011
2015-05-28 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2752万
展开全部
你缺少大括号,把for后面的包括所有if部分都扩起来,表示一个语句块,才能得到正确的结果
更多追问追答
追答
还有if(d==0)那句的输出里面不要k了
追问
我完了试试,谢谢
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式