【C语言】打印水仙花数

题目:用C语言打印1000以内的水仙花数,“所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 

           例如:153是一个“水仙花数”,因为153=1^3+5^3+3^3(1的三次方+5的三次方+3的三次方)

解题思路一:在100~1000以内的整数中逐个判断,先求出该数各个数位的数字,然后各个数位数字三次方和这个数比较,等于这个数说明为水仙花数

解法1:用for循环实现

#include<stdio.h>
 
int main()
{
	int i;
	int a,b,c;//a为个位数字,b为十位数字,c为百位数字 
	for(i=100;i<1000;i++)
	{
		a=i%10;
		b=i/10%10;
		c=i/100;
		
		if(i==(a*a*a+b*b*b+c*c*c))
		{
		    printf("%d\n",i);
		}
		
	}
	return 0;
}

 解法2:用while循环实现

#include <stdio.h> 

int main()
{
	
	int i=100;
	int a,b,c;//a为个位数字,b为十位数字,c为百位数字 
	while(i>=100 && i<1000)
	{
		a=i%10;
		b=i/10%10;
		c=i/100;
 
  		if(i==a*a*a+b*b*b+c*c*c)
		{
	     	   printf("%d\n",i);
		}
		i++;
	}
	return 0;
}

运行结果:

解法思路2:分别从三个位上的数字入手, 如果这三个数的立方和等于这个三个数的组合,则说明这个组合数就是水仙花数。

解法3:用for循环实现

#include <stdio.h> 

int main()
{
	
	int i;  //c,b,a形成的组合数
	int a,b,c;  //a为个位数字,b为十位数字,c为百位数字 
	for(c=1;c<=9;c++) 
	{
	    for(b=0;b<=9;b++)
	    {
     		for(a=0;a<=9;a++)
     		{
     			i=c*100+b*10+a;
     			if(i==a*a*a+b*b*b+c*c*c)
     			{
	     	          printf("%d\n",i);
     			}
     		}
	    }
	}
	return 0;
}

 运行结果:

猜你喜欢

转载自blog.csdn.net/Jacky_Feng/article/details/83450569