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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程调用函数求水仙花数相关的知识,希望对你有一定的参考价值。

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

水仙花数是指一个 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;
参考技术A 您好,图片并不是很清晰,您能把代码复制下来给我吗?我帮你看看。我修改了一下·~~望采纳
#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;
追问

什么代码?不懂

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

还有if(d==0)那句的输出里面不要k了

追问

我完了试试,谢谢

追答

en

追问

这个还是不对,为什么?

运行不出结果

追答

你用的什么编译器?

#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;

本回答被提问者和网友采纳

如何用VB语言求水仙花数和求1~1000以内的素数

我和朋友一起发现了一个更简单的方法求1~1000以内的素数之和,VB代码如下:

Private Sub Command1_Click()
Dim i, s, n, c As Double
i = 3: s = 0
Do While i <= 1000
n = 1: c = 0
Do While n <= i
If i Mod n = 0 Then
c = c + 1
End If
n = n + 1
Loop
If c = 2 Then
s = s + i
End If
i = i + 2
Loop
s = s + 2
Print s
End Sub
运行结果是对的,就是76127
参考技术A Private Sub Form1_Click()Dim a As Integer, b As Integer, c As IntegerFor a = 1 To 9For b = 0 To 9For c = 0 To 9If a ^ 3 + b ^ 3 + c ^ 3 = a * 100 + b * 10 + c ThenForm1.Print a * 100 + b * 10 + cEnd IfNext cNext bNext aEnd 参考技术B '求水仙花数
Private Sub Form1_Click()
Dim a As Integer, b As Integer, c As Integer
For a = 1 To 9
For b = 0 To 9
For c = 0 To 9
If a ^ 3 + b ^ 3 + c ^ 3 = a * 100 + b * 10 + c Then
Form1.Print a * 100 + b * 10 + c
End If
Next c
Next b
Next a
End

'求1~1000以内的素数,
Private Sub Command1_Click()
Dim a As Integer, b As Integer
Text1 = ""
For a = 3 To 999 step 2
For b = 2 To Sqr(a)
If a Mod b = 0 Then
Exit For
End If
If b > Sqr(a) Then
Text1 = Text1 & a & VbNewline
End If
Next b
Next a
End追问

Text1 = ""是什么?

追答

Text1是一个多行文本框,上面那一句是先清空其中的内容(以防多次运行结果太乱)。

以上是关于c语言编程调用函数求水仙花数的主要内容,如果未能解决你的问题,请参考以下文章

C语言-求三位数的水仙花数

求水仙花数c语言

用C语言 求1000以内的水仙花数

大一c语言求水仙花数

c语言求1000以内水仙花数。

如何用VB语言求水仙花数和求1~1000以内的素数