Bỏ qua

Trắc Nghiệm Ôn Tập — Buổi 10: Cấu Trúc switch-case

Hướng dẫn: Chọn đáp án đúng nhất. Xem đáp án ở cuối trang.


Phần 1: Lý Thuyết Cơ Bản

Câu 1. switch-case dùng để làm gì?

  • A. Lặp lại đoạn code nhiều lần
  • B. So sánh một biến với nhiều giá trị cụ thể và thực thi code tương ứng
  • C. Khai báo nhiều biến cùng lúc
  • D. Nhập dữ liệu từ bàn phím

Câu 2. Kiểu dữ liệu nào KHÔNG thể dùng trong switch?

  • A. int
  • B. char
  • C. float
  • D. long

Câu 3. Tác dụng của từ khóa break trong switch-case là:

  • A. Thoát khỏi toàn bộ chương trình
  • B. Bỏ qua câu lệnh tiếp theo
  • C. Thoát khỏi khối switch, tiếp tục thực thi sau }
  • D. Thoát khỏi hàm main

Câu 4. Khối default trong switch thực thi khi nào?

  • A. Luôn luôn thực thi
  • B. Khi không có case nào khớp
  • C. Khi giá trị bằng 0
  • D. Khi tất cả case đều đúng

Câu 5. "Fall-through" trong switch-case có nghĩa là:

  • A. Chương trình bị lỗi và dừng
  • B. Thiếu default block
  • C. Khi không có break, thực thi tiếp tục sang case tiếp theo
  • D. Biến trong switch bị tràn số

Phần 2: Cú Pháp Và Vận Dụng

Câu 6. Đoạn code sau in ra gì khi x = 2?

switch (x) {
    case 1: cout << "A"; break;
    case 2: cout << "B"; break;
    case 3: cout << "C"; break;
    default: cout << "D"; break;
}
  • A. A
  • B. B
  • C. BC
  • D. D

Câu 7. Đoạn code sau in ra gì khi x = 2? (Chú ý: thiếu break)

switch (x) {
    case 1: cout << "A";
    case 2: cout << "B";
    case 3: cout << "C";
    default: cout << "D";
}
  • A. B
  • B. BC
  • C. BCD
  • D. ABCD

Câu 8. Đoạn code sau in ra gì khi x = 5?

switch (x) {
    case 1: cout << "Mot"; break;
    case 2: cout << "Hai"; break;
    default: cout << "Khac"; break;
}
  • A. Mot
  • B. Hai
  • C. Khac
  • D. Không in gì

Câu 9. Đoạn code fall-through sau in ra gì khi thang = 4?

switch (thang) {
    case 4: case 6: case 9: case 11:
        cout << "30 ngay"; break;
    case 2:
        cout << "28 ngay"; break;
    default:
        cout << "31 ngay"; break;
}
  • A. 28 ngay
  • B. 30 ngay
  • C. 31 ngay
  • D. 30 ngay28 ngay

Câu 10. Dòng nào trong switch là KHÔNG hợp lệ?

  • A. case 1:
  • B. case 'A':
  • C. case x: (x là biến)
  • D. case -5:

Câu 11. Tại sao không nên dùng switch với kiểu string?

  • A. Vì string quá dài
  • B. Vì C++ không hỗ trợ switch với string
  • C. Vì string không có giá trị
  • D. Vì string không thể so sánh

Câu 12. Đoạn code nào ĐÚNG về cú pháp?

  • A. switch (3.14) { case 3.14: cout << "Pi"; }
  • B. switch (x) { case "hello": cout << "Hi"; }
  • C. switch (x) { case 1: case 2: cout << "1 or 2"; break; }
  • D. switch (x) { case x+1: cout << "A"; }

Câu 13. Khi nào nên dùng if-else if thay vì switch-case?

  • A. Khi có nhiều giá trị nguyên cần kiểm tra
  • B. Khi cần kiểm tra khoảng giá trị (ví dụ: diem >= 8)
  • C. Khi code cần ngắn hơn
  • D. Khi biến có kiểu int

Câu 14. Đoạn code sau in ra gì khi c = 'b'?

switch (c) {
    case 'A': case 'a': cout << "A"; break;
    case 'B': case 'b': cout << "B"; break;
    default: cout << "Khac"; break;
}
  • A. A
  • B. B
  • C. Khac
  • D. AB

Câu 15. Vị trí của default trong switch có bắt buộc phải ở cuối không?

  • A. Có, bắt buộc phải ở cuối
  • B. Không, có thể ở bất kỳ đâu, nhưng thường đặt cuối để dễ đọc
  • C. Phải đặt ở đầu
  • D. default không được phép trong C++17

Câu 16. Đoạn code sau in ra gì khi x = 5?

switch (x) {
    case 1: cout << "A"; break;
    default: cout << "D";
    case 3: cout << "C"; break;
}
  • A. D
  • B. C
  • C. DC
  • D. Không in gì

Đáp Án

Xem đáp án
Câu Đáp án Giải thích
1 B switch-case so sánh biến với nhiều giá trị cụ thể
2 C float (số thực) không được hỗ trợ trong switch
3 C break thoát khỏi khối switch, tiếp tục chạy sau dấu }
4 B default chạy khi không có case nào khớp với giá trị
5 C Fall-through: thiếu break → thực thi tiếp case tiếp theo
6 B x=2 khớp case 2 → in "B" → break thoát
7 C x=2 khớp case 2, không có break → rơi xuống case 3 và default → in "BCD"
8 C x=5 không khớp case 1 hay 2 → vào default → in "Khac"
9 B thang=4 khớp case 4 → fall-through đến cout << "30 ngay"break
10 C case x: dùng biến làm giá trị case — không hợp lệ, phải là hằng số
11 B C++ không hỗ trợ switch với kiểu string, chỉ hỗ trợ kiểu nguyên
12 C Fall-through hợp lệ: case 1: case 2: cout << "1 or 2"; break;
13 B Khi cần kiểm tra khoảng giá trị (>= 5, < 10...) phải dùng if-else if
14 B c='b' khớp case 'b' → in "B" → break
15 B default có thể đặt bất kỳ đâu nhưng thông thường đặt cuối cho dễ đọc
16 C x=5 không khớp case nào nên nhảy vào default in D, rồi rơi xuống case 3 in C