for迴圈巢狀2021-01-26
阿新 • • 發佈:2021-01-28
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++)
由於每行先是空格,後是*,所以要用兩個內迴圈來分別輸出空格和*
然後輸出*,由於*數與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++)