1. 程式人生 > >四個小時不止是敲了30多行程式碼,還懂了好多

四個小時不止是敲了30多行程式碼,還懂了好多

在某網頁看到一題目為求出0~999之間的所有“水仙花數”並輸出。“水仙花數”是指一個三位數,其各位數字的立方和確好等於該數本身,如;153=1+5+3?,則153是一個“水仙花數”。

#include <stdio.h>
#include <math.h>
int main()
{
	int i=0;
	//int sum = 0;如果sum定義在了For迴圈外面,那麼sum的值就會一直累加
	for(i=0;i<1000;i++)
	{
		int temp =0;
		int a = 0 ;
		temp = i ;
		//求數字的位數
		while (temp)
		{
			a++;
			temp=temp/10;
		}
		//求各位數的a次方的和
		temp=i;
		int sum = 0;    
                //sum只有定義在for迴圈裡面才可以隨著For迴圈語句的每次變化而清零
		while (temp)
		{
			int b = temp%10;
			int b = 0;
			//sum =sum + pow(b, a);           
                        //因為有:pow(double,double) pow(float,float) 所以匹配錯了。
			sum =sum + pow((double)b,(double) a);
                        //強制轉換型別     
			temp=temp/10;
		}
		if(sum==i)
		{
			printf("%d ",i);
		}
	}
	return 0;
}