1. 程式人生 > >任意位數的水仙花數(C語言)

任意位數的水仙花數(C語言)

這是我第一次寫部落格,作為一個計算機專業的大一學生,聽說部落格記錄學習過程是一種不錯的做法,我便來嘗試了,很新奇,希望能堅持下去。
迴歸正題,當時學迴圈時以為水仙花數就是一個各位數字立方和等於它本身的三位數,但實際任意位數都可求水仙花數,此處貼下我的程式碼。

#include<stdio.h>
#include<math.h>
int main()
{
	int m,n,i;            
	int sum = 0;
	int wei(int n);      //宣告求位數的函式
	scanf("%d",&n);
	m = n;               //將輸入數賦給m,因為後續求各位數時n已經變了,
						     無法用n與sum比較
	while(n > 0)               //從個位數開始求各位數	
	{
		i = n % 10;		 
		sum += pow(i,wei(m));	        //各位數的n次方和
		n /= 10;                        
	}	
	if(sum == m)                     //與輸入數比對,判斷是否時水仙花數
		printf("yes\n");
	else
		printf("no\n");
	return 0;
 } 

int wei(int n)                   //求位數的典型函式
{
	int k = 0;
	while(n > 0)
	{
		n /= 10;
		k++; 
	}
	return k;
}

還沒做時以為不會做,但一動手其實不過只是要呼叫求位數的函式罷了,果然計算機還是要勇敢嘗試呀。

歡迎探討交流。謝謝。