c语言编程题打印出所有的“水仙花数”所谓“水仙花数”是指一个三位数其各位数字立方和等于该数本身
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程题打印出所有的“水仙花数”所谓“水仙花数”是指一个三位数其各位数字立方和等于该数本身相关的知识,希望对你有一定的参考价值。
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.程序源代码:
main()
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%-5d",n);
printf("\n");
参考技术A /**
* 打印 10000 以内的所有水仙花数
*
* 所谓“水仙花数”即一个整数满足其值等于各个数位的立方和。
* 例如:153是一个水仙花数,因为153=1*1*1+5*5*5+3*3*3
*
* 1) 检查一个数num是否为水仙花数
* 2) 检查一个范围内全部的num是否为水仙花数
*
* num = 153;
* n1 = 1 = num/10/10%10
* n2 = 5 = num/10%10
* n3 = 3 = num%10
*
* sum = 0; //每个数字3次方的累加和
*
* n = num%10; //n = 3 取最后一位
* num = num/10;//num = 15 消掉最后一位
* sum+= n*n*n
*
* n = num%10; //n= 5 取最后一位
* num = num/10;//num = 1 消掉最后一位
* sum+= n*n*n
*
* n = num%10; //n= 1 取最后一位
* num = num/10;//num = 0 消掉最后一位
* sum+= n*n*n
*
* num==0 结束
* sum 3次方的累加和
* sum == num 相等 num 是水仙花数
*/
public class Demo04
public static void main(String[] args)
for(int number=2; number<=100000; number++)
int num = number;
int sum = 0;
while(true)
int n = num%10;
num /= 10;//num = num/10;
sum += n*n*n;
//System.out.println("n:"+n);//跟踪语句,跟踪n
if(num==0)
break;
if(sum==number)
System.out.print(number+" ");
希望能帮到你 望采纳! 参考技术B public class ShuiXianShu
/**
* 题目:打印出100-999之间所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
* 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
* 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。*
*/
public static void main(String[] args)
for(int i=100;i<=999;i++)
int geWei,shiWei,baiWei;
baiWei=i/100;
shiWei=(i-baiWei*100)/10;
geWei=i-baiWei*100-shiWei*10;
if(i==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei)
System.out.println(i);
参考技术C 打印100-999之间的水仙花数!
方法1:
main()
int a,b,c,d;
for(a=100;a<=99;a++)
b=a/100;
c=a/10-b*10;
d=a-b*100-c*10;
if(b*b*b+c*c*c+d*d*d==a) printf("%d",a);
方法2:
main()
int i,j,k;
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
for(k=1;k<=9;k++)
if((i*i*i+j*j*j+k*k*k)==(i*100+j*10+k))
printf("%d",i*100+j*10+k);
参考技术D public static void main(final String[] args)
System.out.println("所有的水仙花数如下:");
int x; // 百分位
int y; // 十位
int z; // 个位
for (int i = 100; i < 1000; i++)
x = i / 100;
y = (i- x * 100) / 10;
z = i % 10;
if (i == (cubic(x) + cubic(y) + cubic(z)))
System.out.println(String.format("找到水仙花数:%d", i));
private static int cubic(final int n)
return (n * n * n);
所有的水仙花数如下:
找到水仙花数:153
找到水仙花数:370
找到水仙花数:371
找到水仙花数:407
以上是关于c语言编程题打印出所有的“水仙花数”所谓“水仙花数”是指一个三位数其各位数字立方和等于该数本身的主要内容,如果未能解决你的问题,请参考以下文章
C语言试题108之打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的三次方+3 的三次方。
编程输出1000以内的所有水仙花数,所谓水仙花数是指一个3位数,其各位数字的立方和等于其本身
打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。(示例代码