1. 程式人生 > >在迴圈內部還是外部定義變數,差別是真的大啊!

在迴圈內部還是外部定義變數,差別是真的大啊!

  “水仙花數”:是指一個 n 位數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^ 3 + 5^ 3 + 3^ 3 = 153)
  來看一段求 “水仙花數” 的程式:
  **在迴圈外部定義變數**
int main()
{
	int i = 0;
	int count = 1;
	int sum = 0;
	int tmp = i;
	for(i=0; i<=999999; i++)
	{
		//判斷i是否為水仙花數
		//1、判斷位數
		
		while (tmp/10)
		{
			count++;
			tmp /= 10;
		}
		//2、計算每一位的次方和
		tmp = i;
		while(tmp)
		{
			sum +=  pow(tmp%10, count);
			tmp /= 10;
		}
		//3、判斷
		if (sum == i)
			printf("%d ", i);
	}
	
	system("pause");
	return 0;
}

在這裡插入圖片描述 輸出結果錯誤在迴圈外部定義變數:

int main()
{
	int i = 0;
	for(i=0; i<=999999; i++)
	{
		//判斷i是否為水仙花數
		//1、判斷位數
		int count = 1;
	        int sum = 0;
	        int tmp = i;
		while (tmp/10)
		{
			count++;
			tmp /= 10;
		}
		//2、計算每一位的次方和
		tmp = i;
		while(tmp)
		{
			sum +=  pow(tmp%10, count);
			tmp /= 10;
		}
		//3、判斷
		if (sum == i)
			printf("%d ", i);
	}
	
	system("pause");
	return 0;
}

在這裡插入圖片描述 輸出結果正確。 放在迴圈外部就是初值,這個變數只會被賦值一次,而如果放在內部的話,每迴圈一次,就重新初始化一次,也就是說每次迴圈都對這個變數重新賦值了 。