Vòng lặp嵌套 trong C: Hướng dẫn chi tiết cho người mới bắt đầu

Xin chào các nhà mã hóa tương lai! Hôm nay, chúng ta sẽ khám phá thế giới kỳ diệu của các vòng lặp嵌套 trong C. Đừng lo lắng nếu bạn mới bắt đầu lập trình - tôi sẽ là người bạn thân thiện dẫn đường cho bạn trong hành trình thú vị này. Cuối cùng của bài hướng dẫn này, bạn sẽ嵌套 các vòng lặp như một chuyên gia!

C - Nested loop

Vòng lặp嵌套 là gì?

Trước khi chúng ta nhảy vào sâu, hãy bắt đầu từ cơ bản. Hãy tưởng tượng bạn đang sắp xếp ngăn kéo tất của mình. Bạn có nhiều màu tất khác nhau, và mỗi màu có nhiều đôi. Để sắp xếp chúng, bạn có thể sẽ đi qua từng màu (vòng lặp ngoài) và sau đó đếm và ghép từng đôi tất của màu đó (vòng lặp trong). Đó chính là điều mà các vòng lặp嵌套 làm trong lập trình!

Một vòng lặp嵌套 đơn giản là một vòng lặp nằm bên trong một vòng lặp khác. Vòng lặp trong chạy hoàn toàn cho mỗi lần lặp của vòng lặp ngoài. Nó giống như những con búp bê Nga嵌套 - mở một cái, và bên trong lại có một cái khác!

Vòng lặp For嵌套

Hãy bắt đầu với loại vòng lặp嵌套 phổ biến nhất: vòng lặp for嵌套. Dưới đây là một ví dụ đơn giản:

#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;
}

Mã này sẽ đầu ra:

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

Hãy phân tích nó:

  1. Vòng lặp ngoài (i) chạy 3 lần.
  2. Cho mỗi lần lặp của vòng lặp ngoài, vòng lặp trong (j) chạy 3 lần.
  3. Chúng ta in giá trị của ij mỗi khi vòng lặp trong chạy.
  4. Sau khi vòng lặp trong hoàn thành, chúng ta in một ký tự mới dòng (\n).

Nó giống như một điệu nhảy: vòng lặp ngoài dẫn đầu, và vòng lặp trong theo sau, quay ba lần cho mỗi bước của vòng lặp ngoài!

Một ví dụ thực tế hơn

Bây giờ, hãy sử dụng vòng lặp嵌套 để tạo một bảng nhâ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;
}

Mã này tạo ra một bảng nhân 10x10 đẹp mắt. Vòng lặp ngoài đại diện cho các hàng, và vòng lặp trong đại diện cho các cột. Chúng ta nhân số hàng với số cột để lấy giá trị của mỗi ô.

Nesting a While Loop Inside a For Loop

Ai nói rằng chúng ta không thể kết hợp? Hãy thử nesting một vòng lặp while bên trong một vòng lặp for:

#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;
}

Mã này in ra một tam giác vuông của các dấu sao:

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

Tại đây, vòng lặp for kiểm soát số lượng hàng, trong khi vòng lặp while in ra các sao trong mỗi hàng. Nó giống như xây dựng một金字塔 - bạn thêm nhiều khối hơn khi bạn leo lên!

Ví dụ về vòng lặp嵌套 trong C

Hãy khám phá một vài ví dụ khác để巩固 hiểu biết của chúng ta:

1. Mẫu số

#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;
}

Điều này tạo ra một mẫu số:

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

2. Mẫu chữ cái

#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;
}

Điều này in ra một mẫu chữ cái:

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

3. Kiểm tra số nguyên tố

#include <stdio.h>

int main() {
int i, j, flag;
printf("Số nguyên tố từ 1 đến 50 là:\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;
}

Chương trình này tìm tất cả các số nguyên tố từ 1 đến 50. Vòng lặp ngoài duyệt qua các số, trong khi vòng lặp trong kiểm tra xem mỗi số có phải là số nguyên tố hay không.

Kết luận

Vòng lặp嵌套 là công cụ mạnh mẽ trong bộ công cụ của một nhà lập trình. Chúng cho phép chúng ta làm việc với dữ liệu đa chiều và tạo ra các mẫu phức tạp. Nhớ rằng, thực hành làm nên完美的! Hãy thử thay đổi các ví dụ này hoặc tạo ra các chương trình vòng lặp嵌套 của riêng bạn.

Dưới đây là bảng tham khảo nhanh của các loại vòng lặp嵌套 chúng ta đã xem xét:

Vòng lặp ngoài Vòng lặp trong Ví dụ sử dụng
For For Tạo mẫu 2D hoặc bảng
For While Hoạt động hàng có độ dài thay đổi
While For Lặp cố định số lần với điều kiện thay đổi
While While Hoạt động dựa trên điều kiện kép

Chúc các bạn lập trình vui vẻ, và mong rằng các vòng lặp của bạn luôn được嵌套 hoàn hảo!

Credits: Image by storyset