用函数水仙花数c语言程序设计,c语言编程调用函数求水仙花数

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

答案:3  信息版本:手机版

解决时间 2019-10-05 09:03

已解决

2019-10-04 17:32

这是一个调用函数求100到999的水仙花数,没有错,但就是运行不出结果,求大师帮我解答,好苦恼。。。

最佳答案

2019-10-04 18:27

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

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

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

#include

#include

#include

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;

}

全部回答

1楼

2019-10-04 19:09

程序错了几个地方:

1. scanf 的参数必须是地址。a 的前面要加 & 号。

2. 计算 b = 百位; c = 十位; d = 个位; 的方法错了。

3. 比较是 ==。如果用了 =,就会变成赋值,if 的条件就会算错了。

可是刚好这几个错误,编译器都不会报错。

更改以后如以下程序:

#include

void main()

{

int a,b,c,d;   scanf("%d",&a);

b=a/100;

c=a/10%10;

d=a%10;   if (a==b*b*b+c*c*c+d*d*d)     printf("%d是一个水仙花数",a);

}

2楼

2019-10-04 18:40

你缺少大括号,把for后面的包括所有if部分都扩起来,表示一个语句块,才能得到正确的结果

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

你可能感兴趣的:(用函数水仙花数c语言程序设计)