C語言中的嵌套循環:初學者的全面指南

你好,未來的編程巫師們!今天,我們將深入C語言中神奇的嵌套循環世界。別擔心你還是編程新手——我將成為你這次興奮旅程中的友好指導。在這個教學結束時,你將能像專家一樣嵌套循環!

C - Nested loop

什麼是嵌套循環?

在我們跳進深水區之前,先來了解一下基礎知識。想像你在整理你的襪子抽屜。你有不同顏色的襪子,而每種顏色又有許多雙。為了整理它們,你可能會逐一檢查每種顏色(外層循環),然後計數並配對該顏色下的每只襪子(內層循環)。這就是編程中嵌套循環的基本原理!

嵌套循環簡單來說就是一個循環內部再有一個循環。內層循環會在外層循環的每次迭代中完全運行。這就像那些俄羅斯套娃——打開一個,裡面還有一個!

嵌套for循環

我們從最常見的嵌套循環類型開始:嵌套的for循環。這裡有一個簡單的例子:

#include <stdio.h>

int main() {
int i, j;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {
printf("(%d, %d) ", i, j);
}
printf("\n");
}
return 0;
}

這段代碼將輸出:

(1, 1) (1, 2) (1, 3)
(2, 1) (2, 2) (2, 3)
(3, 1) (3, 2) (3, 3)

讓我們分解一下:

  1. 外層循環(i)運行3次。
  2. 在外層循環的每次迭代中,內層循環(j)運行3次。
  3. 每次內層循環運行時,我們打印ij的值。
  4. 內層循環完成後,我們打印一個換行符(\n)。

這就像一場舞蹈:外層循環領導,內層循環跟隨,在外層循環每一步中旋轉三次!

一個更具實際意義的例子

現在,讓我們使用嵌套循環來創建一個乘法表:

#include <stdio.h>

int main() {
int i, j;
printf("   ");
for (i = 1; i <= 10; i++) {
printf("%4d", i);
}
printf("\n   -------------------------------------\n");
for (i = 1; i <= 10; i++) {
printf("%2d |", i);
for (j = 1; j <= 10; j++) {
printf("%4d", i * j);
}
printf("\n");
}
return 0;
}

這段代碼創建了一個美麗的10x10乘法表。外層循環代表行,內層循環代表列。我們將行號乘以列號以獲得每個單元的值。

在for循環中嵌套while循環

誰說我們不能混合搭配?讓我們試試在for循環中嵌套while循環:

#include <stdio.h>

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

這段代碼打印出一個右角三角形星號:

*
* *
* * *
* * * *
* * * * *

在這裡,for循環控制行數,while循環打印每行中的星號。這就像建造一座金字塔——你會在上升時添加更多的磚塊!

C語言中的嵌套循環示例

讓我們探索更多示例來加強我們的理解:

1. 數字模式

#include <stdio.h>

int main() {
int i, j, rows = 5;
for (i = 1; i <= rows; i++) {
for (j = 1; j <= i; j++) {
printf("%d ", j);
}
printf("\n");
}
return 0;
}

這創建了一個數字模式:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

2. 字母模式

#include <stdio.h>

int main() {
int i, j;
char current = 'A';
for (i = 1; i <= 5; i++) {
for (j = 1; j <= i; j++) {
printf("%c ", current++);
}
printf("\n");
}
return 0;
}

這打印出一個字母模式:

A
B C
D E F
G H I J
K L M N O

3. 質數檢查器

#include <stdio.h>

int main() {
int i, j, flag;
printf("1到50之間的質數是:\n");
for (i = 2; i <= 50; i++) {
flag = 0;
for (j = 2; j <= i/2; j++) {
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0)
printf("%d ", i);
}
return 0;
}

這個程序找到了1到50之間的所有質數。外層循環迭代數字,而內層循環檢查每個數字是否為質數。

結論

嵌套循環是編程人員工具箱中的強大工具。它們讓我們能夠處理多維數據並創建複雜模式。記住,熟能生巧!試著修改這些示例或創建自己的嵌套循環程序。

這裡是一個我們已經討論過的嵌套循環類型的快速參考表:

外層循環 內層循環 示例用例
For For 創建2D模式或表格
For While 變長行操作
While For 重複固定操作變量次數
While While 雙重條件基於操作

快樂編程,願你的循環總是完美嵌套!

Credits: Image by storyset