1. 程式人生 > 其它 >C語言中的for迴圈的鑲嵌理解(外層一次,內層一週)

C語言中的for迴圈的鑲嵌理解(外層一次,內層一週)

C語言中的for迴圈的鑲嵌理解(外層一次,內層一週)

在這裡我們使用兩個for迴圈鑲嵌來進行理解,採用的是九九乘法表的程式碼來理解:

測試一:

#include <stdio.h>
int main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=9;j++)
		{
			printf("%d*%d=%2d ",i,j,i+j);
		}
	}
	return 0;
} 

輸入此程式碼我們可以發現結果有81種且在DEV C++中以3行27列的形式輸出,在條件允許的情況下應當只會在一行中輸出。

測試二:

#include <stdio.h>
int main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=9;j++)
		{
			printf("%d*%d=%2d ",i,j,i+j);
		}
		printf("\n");
	}
	return 0;
} 

這次我們在原有的基礎上增加了一個換行printf("\n")位於外層迴圈中與內曾迴圈的語句並列。在由輸出結果(81種9行9列第一行的i都等於1而j則是從1~9)我們可以發現外層迴圈進行一次內層迴圈就會在這一次當中完成一次自己的迴圈,我們將其稱為”外一次,內一週“。

思考:

我們測試二可以看出在列印結果中仍有重複的部分如:1X2=2與2X1=2等只是交換了順序實質上並沒有什麼區別。

那麼我們如何來獲取更為精確的九九乘法表呢?

答案是進行一定的條件限制,如“j<=9”改為”j<=i“,這樣的話在外層迴圈為1是隻有j=1符合要求以此類推

測試三:

#include <stdio.h>
int main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=i;j++)
		{
			printf("%d*%d=%2d ",i,j,i+j);
		}
		printf("\n");
	}
	return 0;
} 

可以看到這一次輸出的結果為:

這裡直觀的看出結果像一個直角三角形且直角在左下角,那麼肯定就有人想問是不是還能讓他改變形狀而並不改變結果啊?答案是肯定的當然方法也有所不同。

這裡在測試二的基礎上在列印結果之前增加了一個if語句進行輸出條件的控制從而達到這個改變的效果。

測試五:

#include <stdio.h>
int main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=9;j++)
		{
			if(j>=i)
			{
			 printf("%d*%d=%2d ",i,j,i+j);
            }
		}
		printf("\n");
	}
	return 0;
} 

而這一切都是在掌握測試二和理解測試二的基礎上來進行實施的。

當然還能進行其它的改變這裡暫時不進行一一的測試需要自己下去進行思考。