c语言中,如何输出所有的水仙花数

Posted

tags:

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

参考技术A c语言中,如何输出所有的水仙花数 水仙花数即三位的自幂数。所谓自幂数,就是指一个 n 位数 ( n≥3 ),其每位上的数字的 n 次幂之和等于本身。
所以水仙花数,首先是三位数,形式为abc,同时a,b,c的立方和值与原本数相同。
类似的还有
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
等等。
对于水仙花数的判断,需要按照以下步骤:
1 提取该数的个位,十位,百位值。
2 计算三个数的立方和。
3 与原值比较,如相等则是。
要输出所有水仙花数,需要:
1 对所有三位数,即100到999遍历;
2 对每个数判断是否为水仙花数,如是则退出。
当回圈结束,所有的水仙花数就输出成功了。
程式码如下:
int isNarcissistic(int n)

int a = n/100;
int b = n/10%10;
int c = n%10;
return a*a*a + b*b*b + c*c*c == n;


int main()

int i;
for(i = 100; i< 1000; i ++)
if(isNarcissistic(i)) printf("%d ",i);

输出结果如下:
153 370 371 407
c语言中水仙花数
这是列印1000以内的水仙华数
#include<stdio.h>int main() int i,a,b,c; for(i=100;i<1000;i++) a=i/100; b=(i/10)%10; c=i%10; if((a*a*a+b*b*b+c*c*c)==i) printf("%d\n",i); return(0);

50分~用QB语言输出所有水仙花数
For n = 100 To 999
i = Int(n / 100)
j = Int((n - i * 100) / 10)
k = n Mod 10
If i ^ 3 + j ^ 3 + k ^ 3 = n Then Print n,
Next

C语言怎样编输出所有水仙花数范围100到999
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。判断一个数是否为水仙花数需要拆分数位,求幂再相加。不过这道题限定了范围,都是三位数,所以可以使用3重回圈分别代表3个数位,这样就省去了拆分的麻烦。
程式码如下:
#include <stdio.h>
int main()

int i, j, k, sum;

sum = 0;

for (i = 1; i < 10; i++)
for (j = 0; j < 10; j++)
for (k = 0; k < 10; k++)
if ((i*i*i + j*j*j + k*k*k) == (i*100 + j*10 + k))
printf("%d\n", i*100 + j*10 + k);

return 0;

输出0-999中的所有的 水仙花数
水仙花数至少要3位数,所以0-999相当于100-999:

@echo off
Setlocal EnableDelayedExpansion
for /l %%a in (100 1 999) do (
for %%a in (%%a/100 %%a%%100/10 %%a%%10) do set/a "x+=%%a*(%%a*(%%a))"
if %%a equ !x! echo %%a
set "x="
)
pause

另存为x.bat双击执行。。
用c#设计程式,输出所有的水仙花数
◆C# ASP.NET 中的实现程式码
for (int i = 100; i < 1000; i++)

int bai = 0;
int shi = 0;
int ge = 0;
int baiyushu = 0;
bai = i / 100;
baiyushu = i % 100;
shi = baiyushu / 10;
ge = baiyushu % 10;
if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge)

Response.Write("水仙花数:" + i + "<br>");


C语言中,水仙花数怎么做
main()
float a,b,c,i
for(i=100;i<=999;i++)
a=i/100;
b=s/10-a*10;
c=i%10;
if(i=a*a*a+b*b*b+c*c*c)

print("%d",i);

如何求所有的水仙花数。
1. 首先你这程式中少了x++;这条语句,会进入死回圈的
2. if(a*a*a=b*b*b+c*c*c==x) "等号"写错了,改成 if(a*a*a+b*b*b+c*c*c==x)
3. printf(%d\n",x); 少了个双引号 改成 printf("%d\n",x);
还有除了这种方法外还有其他好的方法吗?
演算法部分可以改改
a=x/100;
b=(x-a*100)/10;
c=x-a*100-b*10;
改成
a=x/100;
c=x%10; 求余数,得到个位数,
b=x/10; 去掉个位数,
b=b%10; 求余数,得到十位数,
我用回圈写了个程式,可以参考下:
#include<stdio.h>
int main()

int i,a,b,c;
for(i=100;i<=999;++i)

a=i%10;
b=i/100;
c=i/10;
c=c%10;
if(a*a*a+b*b*b+c*c*c==i)printf("%d\n",i);

getch();
return 0;

c语言输出所有得水仙花数,玫瑰花数和五角星数
水仙花数即三位的自幂数。所谓自幂数,就是指一个 n 位数 ( n≥3 ),其每位上的数字的 n 次幂之和等于本身。
所以水仙花数,首先是三位数,形式为abc,同时a,b,c的立方和值与原本数相同。
类似的还有
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
等等。
对于水仙花数的判断,需要按照以下步骤:
1 提取该数的个位,十位,百位值。
2 计算三个数的立方和。
3 与原值比较,如相等则是。
要输出所有水仙花数,需要:
1 对所有三位数,即100到999遍历;
2 对每个数判断是否为水仙花数,如是则退出。
当回圈结束,所有的水仙花数就输出成功了。
程式码如下:
int isNarcissistic(int n)

int a = n/100;
int b = n/10%10;
int c = n%10;
return a*a*a + b*b*b + c*c*c == n;

int main()

int i;
for(i = 100; i< 1000; i ++)
if(isNarcissistic(i)) printf("%d ",i);

如何用C语言求所有水仙花数之和?
# include <stdio.h>
void main()

int m,n,a,b;
int sum=0;对总和初始化
for(m=100;m<1000;m++)

n=m/100;
a=m%100/10;
b=m%10; for回圈
if(m==n*n*n+a*a*a+b*b*b)
printf("%d\n",m);
sum=sum+m;如果是水仙花数就显示这个数并加到sum中

printf("%d\n",sum);寻找结束后显示sum

用c语言求解 输出1-50以内的所有勾股数

参考技术A #include <stdio.h>
void main()
int a,b,c;
for(a=2;a<=48;a++)
for(b=a+1;b<=49;b++)
for(c=b+1;c<=50;c++)
if(a*a+b*b==c*c)
printf("%-4d%-4d%-4d\\n",a,b,c);

参考技术B

# include <stdio.h>

# include <math.h>

#define N 50

int main ()

int a[N],i,j,m,x;

for(m=0,x=1;m<N;m++,x++)

a[m]=x*x;

for(i=1;i<N;i++)

for(j=i+1;j<N;j++)

for(m=0;m<N;m++)

if(i*i+j*j==a[m])

x=sqrt(a[m]);

printf("%d %d %d\\n",i,j,x);break;

return 0;

好不容易用数组做出来,发现早就有人用for做出来了,发出来分享一下吧。


以上是关于c语言中,如何输出所有的水仙花数的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎样编输出所有水仙花数范围100到999

水仙花数c语言

C语言 水仙花数 编程题

用c语言输出1000以内的水仙花数

C语言1~10000之间所有水仙花数

大一c语言求水仙花数