Vòng lặp lồng nhau
Thuộc phần Nền tảng cơ bản trong hành trình C của Coddy. Bài học 43 trên 63.
Vòng lặp lồng nhau là các vòng lặp nằm bên trong một vòng lặp khác. Với mỗi lần lặp của vòng lặp bên ngoài, vòng lặp bên trong sẽ chạy hoàn toàn.
Tạo một vòng lặp bên ngoài chạy 2 lần:
for (int i = 0; i < 2; i++) {
// Đoạn code của vòng lặp ngoài ở đây
}Thêm một vòng lặp bên trong chạy 3 lần cho mỗi lần lặp của vòng lặp bên ngoài:
int rows = 2;
int cols = 3;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d,%d ", i, j);
}
printf("\n");
}Kết quả đầu ra sẽ là:
0,0 0,1 0,2
1,0 1,1 1,2 Hãy chú ý rằng vòng lặp bên trong hoàn thành các lần lặp trước khi vòng lặp bên ngoài chuyển sang lần lặp tiếp theo. Mỗi vòng lặp có bộ đếm riêng: j bắt đầu lại từ 0 mỗi khi vòng lặp bên ngoài chạy, còn rows và cols giữ nguyên và chỉ cho các vòng lặp biết khi nào cần dừng.
Thử thách
DễTạo một chương trình in ra hình chữ nhật bằng dấu sao (*) dựa trên số hàng và số cột người dùng nhập vào.
Chương trình của bạn cần:
- Đọc hai số nguyên từ người dùng: rows và columns.
- Dùng các vòng lặp lồng nhau để in hình chữ nhật bằng dấu sao, trong đó vòng lặp bên ngoài xử lý các hàng và vòng lặp bên trong xử lý các cột.
- In ký tự xuống dòng sau mỗi hàng.
Ví dụ, nếu đầu vào là 3 hàng và 4 cột, đầu ra sẽ là:
****
****
****Dùng một bộ đếm mới cho mỗi vòng lặp, chẳng hạn i cho các hàng và j cho các dấu sao trên một hàng, rồi so sánh bộ đếm đó với rows hoặc columns. Đừng thay đổi chính rows và columns: mỗi hàng đều cần dùng lại columns.
Tự làm thử
#include <stdio.h>
int main() {
int rows, columns;
scanf("%d", &rows);
scanf("%d", &columns);
// Viết code ở đây để in ra mẫu
return 0;
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Nền tảng cơ bản
2Biến
Kiểu dữ liệuSố nguyênSố thực - DoubleKý tựGiá trị BooleanHằng sốCơ bản về printfQuy tắc đặt tên biếnChuyển đổi kiểu phần 1Chuyển đổi kiểu phần 2Thử thách ôn tậpTự luyện tập: Trình biên dịch C online