Trắc Nghiệm — Mini Test 2¶
Hướng dẫn: Chọn đáp án đúng nhất. Xem đáp án ở cuối trang.
Phần 1: Lý Thuyết Chung¶
Câu 1. Từ khóa nào dùng để thoát hoàn toàn khỏi cấu trúc switch-case hoặc vòng lặp?
- A.
continue - B.
exit - C.
return - D.
break
Câu 2. Sự khác biệt cốt lõi nhất giữa while và do-while là gì?
- A.
do-whilenhanh hơn - B.
do-whilekiểm tra điều kiện sau khi chạy lệnh, đảm bảo vòng lặp chạy ít nhất 1 lần - C.
whilephải có dấu chấm phẩy ở cuối - D. Không có gì khác biệt
Câu 3. Vòng lặp for có bao nhiêu thành phần chính bên trong cặp ngoặc đơn ()?
- A. 2 (Điều kiện, Bước nhảy)
- B. 3 (Khởi tạo, Điều kiện, Bước nhảy)
- C. 4 (Khởi tạo, Điều kiện, Bước nhảy, Lệnh)
- D. 1 (Điều kiện)
Câu 4. Trong C++, toán tử nào dùng để kiểm tra "chia hết"?
- A.
/ - B.
// - C.
% - D.
\
Câu 5. Khi muốn lấy chữ số hàng đơn vị của một số nguyên \(N\), ta dùng biểu thức nào?
- A.
N / 10 - B.
N % 10 - C.
N / 100 - D.
N % 100
Phần 2: Đọc Hiểu Mã Lệnh¶
Câu 6. Đoạn mã sau in ra gì?
- A. A
- B. B
- C. AB
- D. C
Câu 7. Đoạn mã sau bị lỗi lặp vô hạn ở dòng nào?
- A. Ở vòng chạy
i=1 - B. Ở vòng chạy
i=3, lệnhcontinuebỏ qua lệnhi++làmimãi mãi bằng 3 - C. Ở vòng chạy
i=5 - D. Không bị lặp vô hạn
Câu 8. Mã lệnh sau in ra bao nhiêu dấu sao?
- A. 3
- B. 5
- C. 6
- D. 9
Câu 9. Điều kiện nào sau đây thể hiện "N là số chẵn VÀ N lớn hơn 10"?
- A.
n % 2 == 0 || n > 10 - B.
n / 2 == 0 && n > 10 - C.
n % 2 == 0 && n > 10 - D.
n % 2 == 0 & n > 10
Câu 10. Đoạn code sau in ra gì?
- A. 15
- B. 6
- C. 0
- D. 9
Phần 3: Phân Tích Logic & Cấu Trúc¶
Câu 11. Để in ra menu hiển thị lặp đi lặp lại đến khi người dùng chọn "Thoát", bộ đôi cấu trúc nào được ưu tiên sử dụng nhất?
- A.
forvàif-else - B.
whilevàswitch-case - C.
do-whilevàswitch-case - D.
if-elsevàswitch-case
Câu 12. Để tối ưu hóa thuật toán kiểm tra số nguyên tố, nếu chia thử thấy N chia hết cho \(i\) (với \(i\) từ \(2\) đến \(N-1\)), ta nên gọi lệnh gì ngay lập tức?
- A.
continue - B.
break - C.
return 1 - D. Gọi lại vòng
for
Câu 13. Trong vòng lặp lồng nhau (Kim giờ - Kim phút), nếu vòng ngoài chạy 5 lần, vòng trong chạy 5 lần, tổng số lần thực hiện khối lệnh bên trong cùng là bao nhiêu?
- A. 5
- B. 10
- C. 25
- D. 55
Câu 14. Thuật toán tìm ƯCLN của A và B (Euclid) dựa trên vòng lặp nào?
- A.
while (A != B) - B.
while (A == B) - C.
for (int i=1; i<A; i++) - D.
while (true)
Câu 15. Muốn đếm ngược từ 10 về 1 bằng while, cú pháp đúng là:
- A.
- B.
- C.
- D.
Đáp Án¶
Xem đáp án
| Câu | Đáp án | Giải thích |
|---|---|---|
| 1 | D | break có tác dụng đập vỡ, thoát khỏi vòng lặp/switch ngay lập tức. |
| 2 | B | do-while có nguyên lý "Làm trước, kiểm tra sau". |
| 3 | B | Gồm 3 phần cách nhau bằng dấu chấm phẩy ; (Khởi tạo ; Điều kiện ; Bước nhảy). |
| 4 | C | Toán tử % (Modulo) lấy số dư. Nếu số dư bằng 0 tức là chia hết. |
| 5 | B | Chia lấy dư cho 10 sẽ giữ lại chữ số cuối cùng (hàng đơn vị). |
| 6 | A | Cấu trúc if-else if. Ngay khi x > 5 đúng, nó in A và nhảy ra khỏi toàn bộ cụm if (bỏ qua x > 8). |
| 7 | B | Khi i=3, continue đẩy luồng chạy về đầu while, bỏ qua lệnh i++, khiến i kẹt ở 3 vĩnh viễn. |
| 8 | C | Vòng ngoài lặp 3 lần, mỗi lần vòng trong lặp 2 lần \(\to\) Tổng \(3 \times 2 = 6\) sao. |
| 9 | C | Dùng toán tử logic && (AND) để nối 2 điều kiện bắt buộc đồng thời xảy ra. |
| 10 | C | Vòng đời đầu tiên i=1. 1 % 2 != 0 là TRUE (1 là số lẻ). Lệnh break kích hoạt lập tức thoát vòng lặp. sum vẫn bằng 0. |
| 11 | C | do-while in menu 1 lần trước khi xét, switch để rẽ nhánh chức năng rất đẹp. |
| 12 | B | Đã thấy chia hết tức là không phải SNT, thoát vòng lặp bằng break để đỡ tốn CPU chạy vô ích. |
| 13 | C | Tổng số lần = Vòng ngoài \(\times\) Vòng trong = \(5 \times 5 = 25\) lần. |
| 14 | A | Trừ 2 số cho nhau chừng nào chúng KHÁC NHAU (A != B). |
| 15 | B | Bắt đầu từ 10, lặp chừng nào i >= 1 (điều kiện đúng), và sau mỗi vòng thì giảm i đi 1 đơn vị (i--). |