1. 程式人生 > 其它 >for迴圈巢狀2021-01-26

for迴圈巢狀2021-01-26

for迴圈巢狀

  • 例1:
    在這裡插入圖片描述

  • 程式碼:

int main()
{
	int i,j;
	for(i=1;i<=6;i++)
	{
		for(j=1;j<=i;j++)
		{
			putchar('*');
		}
		printf("\n");
	}
	return 0;
}

分析:i代表行數,j代表列數,一共6行6列
i=1時,1*
i=2時,2*

i=5時,5*
所以代表行的外迴圈為for(i=1;i<=6;i++);
而代表列的內迴圈由於*數與i值大小相等,所以內迴圈為for(j=1;j<=i;j++)
每行輸出完成後必須換行,所以要在內迴圈結束後新增printf("\n");

  • 例2
    在這裡插入圖片描述
  • 程式碼:
int main()
{
	int i,j;
	for(i=1;i<=6;i++)
	{
		for(j=1;j<=7-i;j++)
		{
			putchar('*');
		}
		printf("\n");
	}
	return 0;
}

分析:一共6行6列,i代表行數,j代表列數。
i=1,6*
i=2,5*
i=3,4*

i=6,1*
所以代表行的外迴圈為for(i=1;i<=6;i++)
由於*數=7-i,所以內迴圈為for(j=1;j<=7-i;j++),每個內迴圈結束再輸出一個換行符。

  • 例3
    在這裡插入圖片描述
  • 程式碼
int main
() { int i,j,k; for(i=1;i<=6;i++) { for(j=1;j<=6-i;j++) { putchar(' '); } for(k=1;k<=i;k++) { putchar('*'); } printf("\n"); } return 0; }

分析:一共6行6列,i代表行數,j代表空格列數,k代表星列數。
i=1,5空格,1*
i=2,4空格,2*

i=6,0空格,6*
所以代表行的外迴圈為for(i=1;i<=6;i++)
由於每行先是空格,後是*,所以要用兩個內迴圈來分別輸出空格和*

先輸出空格,又由於空格數=6-i,所以代表空格的迴圈為for(j=1;j<=6-i;j++)
然後輸出*,由於*數與i相等,所以代表星的內迴圈為for(k=1;k<=i;k++)

  • 例4:
    在這裡插入圖片描述

  • 程式碼:

int main()
{
	int i,j,k;
	for(i=1;i<=6;i++)
	{
		for(j=1;j<=i-1;j++)
		{
			putchar(' ');
		}
		for(k=1;k<=7-i;k++)
		{
			putchar('*');
		}
		printf("\n");
	}
	return 0;	
}

分析:一共6行6列,i代表行數,j代表空格列數,k代表星列數。
i=1,0空格,6*
i=2,1空格,5*

i=6,5空格,1*
所以代表行的外迴圈為for(i=1;i<=6;i++)
由於每行先是空格,後是*,所以要用兩個內迴圈來分別輸出空格和*
先輸出空格,又由於空格數=i-1,所以代表空格的迴圈為for(j=1;j<=i-1;j++)
然後輸出*,由於*數=7-i,所以代表星的內迴圈為for(k=1;k<=7-i;k++)