Trắc Nghiệm Ôn Tập — Buổi 13: Vòng Lặp for¶
Hướng dẫn: Chọn đáp án đúng nhất. Xem đáp án ở cuối trang.
Phần 1: Lý Thuyết Vòng Lặp¶
Câu 1. Tác dụng chính của vòng lặp for là gì?
- A. Rẽ nhánh luồng thực thi của chương trình
- B. Thực hiện lặp đi lặp lại một đoạn code với số lần biết trước
- C. Khai báo biến
- D. Tính toán nhanh hơn
Câu 2. Vòng lặp for gồm 3 thành phần chính nằm trong dấu ngoặc tròn. Đó là những thành phần nào?
- A. Khởi tạo, Bước nhảy, Kết thúc
- B. Khởi tạo, Điều kiện, Bước nhảy
- C. Nhập, Xử lý, Xuất
- D. Điều kiện, Thực thi, Kết thúc
Câu 3. Thành phần "Khởi tạo" trong for (ví dụ int i = 1) được thực thi bao nhiêu lần?
- A. Thực thi ở mỗi vòng lặp
- B. Chỉ thực thi 1 lần duy nhất khi bắt đầu vòng lặp
- C. Thực thi ở cuối mỗi vòng lặp
- D. Không được thực thi
Câu 4. Trong các cấu trúc sau, đâu là cách khởi tạo biến tính TỔNG đúng nhất?
- A.
int sum; - B.
int sum = 1; - C.
int sum = 0; - D.
long long sum = 1;
Câu 5. Lỗi "Lặp vô hạn" (Infinite loop) xảy ra khi nào?
- A. Khi điều kiện lặp luôn luôn
true - B. Khi điều kiện lặp luôn luôn
false - C. Khi không có khối lệnh bên trong
- D. Khi khởi tạo sai
Phần 2: Đọc Hiểu Mã Lệnh¶
Câu 6. Đoạn code sau in ra màn hình bao nhiêu dấu sao *?
- A. 4
- B. 5
- C. 6
- D. Lỗi
Câu 7. Đoạn code sau in ra gì?
- A.
10 9 8 - B.
8 - C.
10 9 8 7... - D. Không in gì
Câu 8. Vòng lặp sau chạy bao nhiêu lần?
- A. 2 lần
- B. 3 lần
- C. 4 lần
- D. 5 lần
Câu 9. Để tính giai thừa \(N! = 1 \cdot 2 \cdot 3 \dots N\), biến tich phải khởi tạo bằng bao nhiêu?
- A. 0
- B. 1
- C. -1
- D. N
Câu 10. Đoạn code sau bị lỗi biên dịch ở đâu?
- A. Dòng
int sum = 0; - B.
sum += i; - C. Dòng
cout << sum;vì biếnsumđược khai báo trong vòng lặp nên không tồn tại ở ngoài - D. Không bị lỗi
Phần 3: Vận Dụng¶
Câu 11. Để in ra các số chẵn từ 2 đến 10, vòng lặp nào sau đây là TỐI ƯU nhất?
- A.
for (int i = 1; i <= 10; i++) { if (i % 2 == 0) cout << i; } - B.
for (int i = 2; i <= 10; i += 2) { cout << i; } - C.
for (int i = 2; i < 11; i++) { cout << i; } - D. Cả A và B đều tốt như nhau
Câu 12. Đoạn code nào tính chính xác tổng các số từ 1 đến N?
- A.
int sum=0; for (int i=1; i<=N; i++) sum = sum + 1; - B.
int sum=0; for (int i=1; i<=N; i++) sum = sum + i; - C.
int sum=1; for (int i=1; i<=N; i++) sum = sum + i; - D.
for (int i=1; i<=N; i++) int sum = 0; sum += i;
Câu 13. Biến i trong for (int i = 0; ...) là từ viết tắt phổ biến của từ gì trong tiếng Anh?
- A. Integer
- B. Increment
- C. Iterator / Index
- D. If
Câu 14. Vòng lặp sau có phải là vòng lặp vô hạn không?
- A. Có, vì
ibắt đầu từ 1 và cứ tăng lên, luôn luôn > 0 - B. Không, nó sẽ tự dừng
- C. Lỗi biên dịch
- D. Nó chạy 1 lần rồi dừng
Câu 15. Điều kiện dừng của vòng lặp for (int i = 0; i < N; i++) là khi:
- A.
i == N - 1 - B.
i == N - C.
i > N - D.
i == 0
Đáp Án¶
Xem đáp án
| Câu | Đáp án | Giải thích |
|---|---|---|
| 1 | B | Vòng lặp for giúp lặp lại đoạn code với số lần lặp đã biết trước |
| 2 | B | Cú pháp: for (Khởi tạo; Điều kiện; Bước nhảy) |
| 3 | B | Phần "Khởi tạo" (VD: int i = 1) chỉ thực hiện 1 lần lúc bắt đầu |
| 4 | C | Tính tổng phải khởi tạo bằng 0 (vì a + 0 = a) |
| 5 | A | Lặp vô hạn xảy ra khi điều kiện lặp luôn true, code không bao giờ thoát ra được |
| 6 | B | Vòng lặp chạy với i từ 1 đến 5 \(\to\) 5 lần \(\to\) 5 dấu sao |
| 7 | B | Vòng lặp chạy lùi từ 10 xuống 1. Khi i = 8, in ra 8 |
| 8 | B | i nhận các giá trị: 0, 2, 4 (chạy 3 lần). Khi i = 6 thì vi phạm < 5 nên dừng |
| 9 | B | Tính tích (giai thừa) phải khởi tạo bằng 1 (vì a * 1 = a). Nếu = 0 thì kết quả luôn = 0 |
| 10 | C | Biến khai báo bên trong {} của for thì chỉ tồn tại bên trong nó (Local Scope) |
| 11 | B | B tối ưu hơn vì nhảy trực tiếp qua các số chẵn, số lần lặp giảm một nửa so với A |
| 12 | B | sum += i mới là cộng dồn các giá trị i (1, 2, 3...) vào sum |
| 13 | C | i thường viết tắt của Iterator (trình lặp) hoặc Index (chỉ số) |
| 14 | A | Lặp vô hạn, mặc dù sau khi chạy rất lâu i sẽ bị tràn (overflow) thành số âm và dừng, nhưng trên lý thuyết đó là lỗi vô hạn |
| 15 | B | Nó chạy khi i < N. Khi i = N, điều kiện i < N trả về false và vòng lặp kết thúc |