Trắc nghiệm Tin học 10 Kết nối tri thức Bài 21: Câu lệnh lặp while - Đề 03 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Trong Python, câu lệnh `while` được sử dụng để thực hiện lặp khi nào?
- A. Lặp với số lần xác định trước.
- B. Lặp khi một điều kiện cho trước vẫn đúng.
- C. Lặp để duyệt qua các phần tử của một danh sách.
- D. Lặp vô điều kiện mãi mãi.
Câu 2: Xem xét đoạn mã Python sau: `x = 0; while x < 5: print(x); x = x + 1`. Giá trị nào KHÔNG được in ra màn hình?
Câu 3: Điều gì sẽ xảy ra nếu điều kiện trong câu lệnh `while` luôn đúng?
- A. Vòng lặp sẽ thực hiện mãi mãi (vòng lặp vô hạn).
- B. Chương trình sẽ báo lỗi.
- C. Vòng lặp sẽ tự động dừng sau một số lần lặp nhất định.
- D. Vòng lặp sẽ bỏ qua phần thân và kết thúc.
Câu 4: Cho đoạn mã: `n = 10; dem = 0; while n > 0: n = n // 2; dem = dem + 1`. Giá trị của `dem` sau khi vòng lặp kết thúc là bao nhiêu?
Câu 5: Trong tình huống nào sau đây, sử dụng vòng lặp `while` sẽ phù hợp hơn vòng lặp `for`?
- A. Khi bạn muốn lặp lại một khối lệnh với số lần đã biết trước.
- B. Khi bạn muốn lặp lại một khối lệnh cho đến khi một điều kiện cụ thể xảy ra.
- C. Khi bạn muốn duyệt qua tất cả các phần tử của một danh sách.
- D. Trong mọi trường hợp, `for` và `while` đều có thể thay thế cho nhau.
Câu 6: Để thoát khỏi một vòng lặp `while` vô hạn, thao tác nào sau đây là đúng?
- A. Đóng cửa sổ chương trình.
- B. Gõ lệnh `stop` vào cửa sổ dòng lệnh.
- C. Sử dụng tổ hợp phím Ctrl + C (hoặc Command + C trên macOS).
- D. Chờ cho đến khi máy tính tự khởi động lại.
Câu 7: Cho đoạn chương trình: `i = 1; S = 0; while i <= 3: S = S + i*i; i = i + 1; print(S)`. Giá trị cuối cùng của S được in ra là:
Câu 8: Xét bài toán: "Nhập vào các số nguyên dương cho đến khi nhập số 0". Cấu trúc lặp nào phù hợp nhất để giải bài toán này?
- A. Vòng lặp `while`.
- B. Vòng lặp `for`.
- C. Cả `while` và `for` đều phù hợp như nhau.
- D. Không thể dùng vòng lặp để giải bài toán này.
Câu 9: Trong câu lệnh `while <điều kiện>: `, điều kiện được kiểm tra ở thời điểm nào?
- A. Chỉ một lần duy nhất trước khi bắt đầu vòng lặp.
- B. Trước mỗi lần thực hiện khối lệnh bên trong vòng lặp.
- C. Sau mỗi lần thực hiện khối lệnh bên trong vòng lặp.
- D. Chỉ khi vòng lặp sắp kết thúc.
Câu 10: Chọn phát biểu SAI về vòng lặp `while` trong Python:
- A. Vòng lặp `while` có thể không thực hiện khối lệnh bên trong nếu điều kiện ban đầu đã sai.
- B. Vòng lặp `while` có thể được sử dụng để tạo vòng lặp vô hạn.
- C. Số lần lặp của vòng lặp `while` luôn xác định được trước khi vòng lặp bắt đầu.
- D. Cần đảm bảo có sự thay đổi giá trị của biến trong điều kiện lặp để tránh vòng lặp vô hạn.
Câu 11: Viết chương trình tính tổng các số chẵn từ 0 đến n (n nhập từ bàn phím) sử dụng vòng lặp `while`. Điều kiện lặp nào sau đây là phù hợp?
- A. `while i <= n:` (với `i` là biến đếm)
- B. `while S < n:` (với `S` là tổng)
- C. `while True:` (và sử dụng `break` bên trong vòng lặp)
- D. `while i != n:`
Câu 12: Cho đoạn mã: `x = 10; while x > 5: x = x - 1; if x == 7: continue; print(x, end=" ")`. Đoạn mã này in ra dãy số nào?
- A. 9 8 7 6 5
- B. 9 8 6 5
- C. 10 9 8 7 6
- D. 9 8 7 6
Câu 13: Xét tình huống: Người dùng cần nhập mật khẩu đúng để đăng nhập. Nếu nhập sai, chương trình yêu cầu nhập lại. Cấu trúc lặp `while` được sử dụng như thế nào trong tình huống này?
- A. Vòng lặp `while` dùng để kiểm tra xem mật khẩu có đủ độ dài hay không.
- B. Vòng lặp `while` dùng để mã hóa mật khẩu trước khi lưu trữ.
- C. Vòng lặp `while` dùng để giới hạn số lần nhập sai mật khẩu.
- D. Vòng lặp `while` dùng để lặp lại việc yêu cầu nhập mật khẩu cho đến khi mật khẩu đúng được nhập.
Câu 14: Đoạn mã Python nào sau đây tính tổng các chữ số của một số nguyên dương `n` (ví dụ n=123, tổng là 1+2+3=6) sử dụng vòng lặp `while`?
- A. `tong = 0; for digit in str(n): tong += int(digit)`
- B. `tong = 0; for i in range(n): tong += i`
- C. `tong = 0; while n > 0: tong += n % 10; n = n // 10`
- D. `tong = 0; if n > 0: tong = n + tong`
Câu 15: Trong một trò chơi, người chơi có 3 mạng. Mỗi lần thua, mất 1 mạng. Vòng lặp `while` nào mô tả đúng tình trạng trò chơi tiếp tục?
- A. `while mạng == 3:`
- B. `while mạng > 0:`
- C. `while mạng >= 3:`
- D. `while mạng != 0:`
Câu 16: Cho đoạn mã: `a = 5; b = 0; while a > b: print(a - b); a = a - 1; b = b + 1`. Có bao nhiêu số được in ra màn hình?
Câu 17: Để viết một chương trình đếm ngược từ 10 về 1 sử dụng `while`, điều kiện lặp và bước thay đổi biến đếm nào là đúng?
- A. Điều kiện: `while i >= 1`; Bước: `i = i + 1`
- B. Điều kiện: `while i > 0`; Bước: `i = i + 1`
- C. Điều kiện: `while i >= 1`; Bước: `i = i - 1`
- D. Điều kiện: `while i < 10`; Bước: `i = i - 1`
Câu 18: Nếu bạn vô tình viết `while True:` mà không có lệnh `break` hoặc điều kiện dừng khác trong thân vòng lặp, hậu quả nghiêm trọng nhất có thể xảy ra là gì?
- A. Chương trình chạy chậm hơn bình thường.
- B. Chương trình có thể làm treo máy tính do sử dụng tài nguyên quá mức.
- C. Chương trình sẽ tự động sửa lỗi và tiếp tục chạy.
- D. Không có hậu quả nghiêm trọng, chỉ cần đóng chương trình là xong.
Câu 19: Trong Python, từ khóa nào dùng để kết thúc vòng lặp `while` ngay lập tức, bất kể điều kiện lặp còn đúng hay không?
- A. `break`
- B. `continue`
- C. `exit`
- D. `pass`
Câu 20: Cho đoạn mã: `x = 2; y = 10; while x < y: if y % x == 0: y = y // x; else: x = x + 1; print(x, y)`. Giá trị cuối cùng của `x` và `y` là:
- A. 2 1
- B. 3 1
- C. 4 1
- D. 5 1
Câu 21: Ứng dụng thực tế nào sau đây KHÔNG phù hợp để sử dụng vòng lặp `while`?
- A. Chờ người dùng nhập dữ liệu cho đến khi họ nhập đúng định dạng.
- B. Thực hiện một tác vụ nào đó lặp đi lặp lại cho đến khi một điều kiện bên ngoài thay đổi.
- C. Duyệt qua từng mục trong danh sách các sản phẩm để hiển thị giá.
- D. Đọc dữ liệu từ một cảm biến liên tục cho đến khi nhận được tín hiệu dừng.
Câu 22: Trong Python, nếu bạn muốn vòng lặp `while` có một nhánh `else` được thực hiện khi vòng lặp kết thúc một cách tự nhiên (không phải do `break`), bạn viết cấu trúc nào?
- A. `while <điều kiện>: ... else: ...`
- B. `while <điều kiện>: ... else: ...` (cấu trúc này là đúng)
- C. `while <điều kiện>: ... finally: ...`
- D. Vòng lặp `while` không hỗ trợ nhánh `else`.
Câu 23: Cho đoạn mã: `count = 0; text = "hello"; while text: count += 1; text = text[1:]`. Giá trị của `count` sau khi chạy là:
Câu 24: Để kiểm tra xem một số nguyên dương `n` có phải là số nguyên tố hay không, vòng lặp `while` có thể được sử dụng để kiểm tra tính chia hết. Điều kiện lặp nào sau đây là hợp lý (giả sử `i` khởi đầu từ 2)?
- A. `while i * i <= n:`
- B. `while i < n:`
- C. `while i <= n / 2:`
- D. `while i <= sqrt(n):`
Câu 25: Xét chương trình nhập liên tục số cho đến khi tổng các số nhập vào lớn hơn 100. Cấu trúc vòng lặp `while` nào thể hiện đúng logic này?
- A. `while count < 100:`
- B. `while number <= 100:`
- C. `while True: if total > 100: break`
- D. `while total <= 100:`
Câu 26: Trong vòng lặp `while`, lệnh `continue` có tác dụng gì?
- A. Thoát hoàn toàn khỏi vòng lặp.
- B. Bỏ qua phần còn lại của lần lặp hiện tại và chuyển sang lần lặp tiếp theo.
- C. Khởi động lại vòng lặp từ đầu.
- D. Báo lỗi và dừng chương trình.
Câu 27: Cho đoạn mã: `x = 5; y = 1; while True: y = y * x; x = x - 1; if x == 0: break; print(y)`. Giá trị cuối cùng được in ra là:
- A. 1
- B. 5
- C. 120
- D. Vòng lặp vô hạn.
Câu 28: Khi nào nên sử dụng vòng lặp `while` thay vì vòng lặp `for` trong Python để duyệt qua một danh sách?
- A. Khi muốn duyệt danh sách theo thứ tự ngược lại.
- B. Khi muốn thay đổi giá trị của các phần tử trong danh sách.
- C. Khi muốn duyệt danh sách với bước nhảy khác 1.
- D. Vòng lặp `for` thường phù hợp hơn để duyệt qua danh sách, `while` ít khi được dùng cho mục đích này.
Câu 29: Cho đoạn mã: `n = 7; i = 1; while i < n: if n % i == 0: print(i); i = i + 1`. Đoạn mã này in ra các ước số nào của 7 (ngoài 1 và 7)?
- A. 1, 7
- B. Không có ước số nào.
- C. 7
- D. Đoạn mã bị lỗi và không in ra gì.
Câu 30: Một máy ATM cho phép rút tiền cho đến khi số dư trong tài khoản không đủ. Vòng lặp `while` nào mô tả đúng quá trình này (giả sử `so_du` là số dư và `tien_rut` là số tiền muốn rút)?
- A. `while tien_rut > 0:`
- B. `while so_du >= tien_rut:`
- C. `while True: if so_du < tien_rut: break`
- D. `while so_du > 0:`