wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Untitled Quiz

Total questions: 150

Worksheet time: 3hrs 30mins

Name
Class
Date
1.

Xác định độ phức tạp thời gian của đoạn mã Python sau:

for i in range(n):

print(i)

a)

T(n) = O(1)O(1)

b)

T(n) = O(n)O(n)

c)

T(n) = O(n2)O(n^2)

d)

T(n) = O(logn)O(\log n)

2.

Xác định độ phức tạp thời gian của đoạn mã Python sau:

for i in range(n):

for j in range(n):

print(i, j)

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(n3)O(n^3)

d)

O(logn)O(\log n)

3.

Xác định độ phức tạp thời gian của đoạn mã Python sau:

def test(n):

for i in range (n):

print()

a)

T(n) = O(1)O(1)

b)

T(n) = O(n)O(n)

c)

T(n) = O(n2)O(n^2)

d)

T(n) = O(logn)O(\log n)

4.

[TH] Xác định độ phức tạp thời gian của đoạn mã Python sau:

for i in range(n):

for j in range(100):

print(i, j)

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(logn)O(\log n)

d)

O(1)O(1)

5.

Xác định độ phức tạp thời gian của đoạn mã Python sau:

for i in range(n): print(i) for j in range(n): print(j)

a)

O(n)O(n)

b)

O(nlogn)O(n\log n)

c)

O(n2)O(n^2)

d)

O(n3)O(n^3)

6.

[TH] Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): print(i) for j in range(n): print(j)

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(n3)O(n^3)

d)

O(logn)O(\log n)

7.

Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): for j in range(n*n): print(i, j)

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(n3)O(n^3)

d)

O(n4)O(n^4)

8.

Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): for j in range(i*i): print(i, j)

a)

O(n2)O(n^2)

b)

O(n3)O(n^3)

c)

O(n4)O(n^4)

d)

O(n5)O(n^5)

9.

[TH] Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): print("Hello") for k in range(n): for j in range(n): print(i)

a)

O(n)O(n)

b)

O(n3)O(n^3)

c)

O(n2+n)=O(n2)O(n^2+n)=O(n^2)

d)

O(logn)O(\log n)

10.

[VDT] Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): for j in range(n): for k in range(10): print(i, j, k)

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(n3)O(n^3)

d)

O(n4)O(n^4)

11.

Xác định độ phức tạp thời gian của đoạn mã Python sau: i = n while i > 0: i = i // 2

a)

O(1)O(1)

b)

O(logn)O(\log n)

c)

O(n)O(n)

d)

O(n2)O(n^2)

12.

[TH] Xác định độ phức tạp thời gian của đoạn mã Python sau: i = n while i > 1: i = i // 2

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(logn)O(\log n)

d)

O(1)O(1)

13.

Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n*n): print(i)

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(n3)O(n^3)

d)

O(logn)O(\log n)

14.

Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): for j in range(n*n): print(i, j)

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(n3)O(n^3)

d)

O(logn)O(\log n)

15.

Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(1000): print(i)

a)

O(1)O(1)

b)

O(n)O(n)

c)

O(logn)O(\log n)

d)

O(n2)O(n^2)

16.

[TH] Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): for j in range(n): print(i, j)

a)

O(n)O(n)

b)

O(nlogn)O(n\log n)

c)

O(n2)O(n^2)

d)

O(n3)O(n^3)

17.

[VDT] Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): print("Done") for j in range(n): for k in range(n): print(j, k)

a)

O(n)O(n)

b)

O(n3)O(n^3)

c)

O(n2+n)=O(n2)O(n^2+n)=O(n^2)

d)

O(logn)O(\log n)

18.

[TH] Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): print(i) for j in range(n*n): print(j)

a)

O(n)O(n)

b)

O(n3)O(n^3)

c)

O(n+n2)=O(n2)O(n+n^2)=O(n^2)

d)

O(n4)O(n^4)

19.

[VDT] Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): for j in range(n): for k in range(n*n): print(i, j, k)

a)

O(n2)O(n^2)

b)

O(n3)O(n^3)

c)

O(n4)O(n^4)

d)

O(n5)O(n^5)

20.

[TH] Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n*n): for k in range(n): for j in range(n): print(i, k, j)

a)

O(n2)O(n^2)

b)

O(n3)O(n^3)

c)

O(n4)O(n^4)

d)

O(n5)O(n^5)

21.

Xác định độ phức tạp thời gian của đoạn mã Python sau: for i in range(n): for j in range(n): print(i, j)

a)

T(n) = O(1)O(1)

b)

T(n) = O(logn)O(\log n)

c)

T(n) = O(n2)O(n^2)

d)

T(n) = O(n3)O(n^3)

22.

[VDT] Xác định độ phức tạp thời gian của đoạn mã Python sau: i = 1 while i < n: i = i * 2

a)

O(logn)O(\log n)

b)

O((logn)2)O((\log n)^2)

c)

O(n)O(n)

d)

O(nlogn)O(n\log n)

23.

Phương pháp làm mịn dần trong thiết kế chương trình là gì?

a)

Phương pháp làm giảm số lượng mã lệnh trong chương trình

b)

Phương pháp chi tiết hóa các bước từ ý tưởng tổng quan đến từng hành động cụ thể

c)

Phương pháp kiểm tra lỗi sau khi viết xong chương trình

d)

Phương pháp tổ chức dữ liệu theo thứ tự tăng dần

24.

Khi thiết kế chương trình theo phương pháp làm mịn dần, bước đầu tiên cần thực hiện là gì?

a)

Xác định đầu vào và đầu ra của bài toán

b)

Viết toàn bộ chương trình

c)

Kiểm tra lỗi

d)

Thực hiện từng thao tác cụ thể

25.

Phương pháp làm mịn dần trong thiết kế chương trình giúp gì cho lập trình viên?

a)

Tăng tốc độ chạy chương trình

b)

Giảm dung lượng bộ nhớ chương trình

c)

Làm rõ từng bước của chương trình, dễ dàng chuyển ý tưởng thành câu lệnh

d)

Tự động phát hiện lỗi cú pháp

26.

Sau khi hoàn thành phương pháp làm mịn dần, kết quả cuối cùng là:

a)

Một chương trình hoàn chỉnh với các bước chi tiết

b)

Một danh sách lỗi và cách khắc phục

c)

Một sơ đồ khối không có mã lệnh

d)

Một tài liệu mô tả yêu cầu mà chưa có thuật toán

27.

[TH] Thuật ngữ tiếng Anh của “làm mịn dần” là:

a)

Step-by-step design

b)

Top-down refinement

c)

Bottom-up refinement

d)

Divide and conquer

28.

Mục đích chính của làm mịn dần là:

a)

Tăng tốc độ thực thi chương trình

b)

Dễ kiểm soát, dễ lập trình và dễ mở rộng

c)

Làm cho chương trình chạy đẹp hơn

d)

Giảm bộ nhớ sử dụng

29.

[TH] Trong một chu trình tính điểm trung bình, bước làm mịn phù hợp nhất là:

a)

Nhập điểm → Tính trung bình → In kết quả

b)

Xác định biến trung gian để lưu tổng điểm

c)

Viết vòng lặp for

d)

Xác định cấu trúc dữ liệu danh sách

30.

Làm mịn dần phù hợp nhất với giai đoạn nào của lập trình?

a)

Kiểm thử chương trình

b)

Viết chương trình hoàn chỉnh

c)

Thiết kế thuật toán trước khi lập trình

d)

Bảo trì sau khi chạy thực tế

31.

Phân rã theo làm mịn dần: lựa chọn nào sau đây không phải là lợi ích của phương pháp làm mịn dần?

a)

Chương trình dễ bảo trì

b)

Giảm lỗi logic nhờ mô tả rõ ràng

c)

Giúp viết code nhanh hơn ngay từ đầu

d)

Giúp tổ chức chương trình có cấu trúc

32.

[TH] Ví dụ của làm mịn dần:

a)

Từ “Tính tổng dãy số” → “Nhập n → lặp → cộng dồn → in tổng”

b)

Viết 1 chương trình từ trên xuống dưới

c)

Gộp thủ tục từ nhiều đoạn lệnh khi chạy

d)

Dùng công cụ AI viết hộ

33.

[TH] Khi làm mịn dần, cách tiếp cận phù hợp là:

a)

Thiết kế theo hướng thuật toán hóa

b)

Thiết kế hướng chi tiết ngay

c)

Thiết kế từ trên xuống

d)

Thiết kế module hóa

34.

Khi làm mịn dần, mỗi bước làm mịn phải:

a)

Ưu tiên hoá tốc độ

b)

Ngắn hơn 3 dòng

c)

Chi tiết hơn mức trước

d)

Có mã nguồn Python tương ứng

35.

Trong làm mịn dần, mức mô tả chi tiết nhất là:

a)

Mã giả

b)

Mã nguồn thật

c)

Sơ đồ khối

d)

Danh sách module

36.

Bước đầu tiên của làm mịn dần là:

a)

Viết mã nguồn chi tiết

b)

Xác định dữ liệu vào – ra

c)

Mô tả thuật toán tổng quát

d)

Chạy thử chương trình

37.

Dấu hiệu cho thấy mô tả đã đủ mịn:

a)

Có thể dịch thành chương trình ngay

b)

Đã chạy thử

c)

Chỉ còn 2 bước

d)

Không có vòng lặp

38.

Trong làm mịn dần, điều quan trọng nhất là:

a)

Viết code ngắn

b)

Mỗi bước phải rõ ràng, logic

c)

Dùng nhiều hàm

d)

Tránh dùng vòng lặp

39.

[TH] Phương pháp làm mịn dần đặc biệt hữu ích cho:

a)

Bài toán không có thuật toán rõ ràng

b)

Bài toán lớn, nhiều bước xử lý

c)

Bài toán chỉ có 2–3 lệnh

d)

Chương trình đã có sẵn

40.

[TH] Trong làm mịn dần, nếu mô tả mức chi tiết không thể tiếp tục cụ thể hóa, ta nên:

a)

Giữ nguyên mô tả

b)

Chuyển mô tả đó sang giai đoạn viết mã nguồn

c)

Quay lại mức cao hơn và điều chỉnh lại

d)

Bỏ toàn bộ mô tả và viết lại từ đầu

41.

[VDT] Ví dụ nào dưới đây không phải là bước làm mịn dần thực sự?

a)

“Tính tổng mảng” → “Duyệt từng phần tử” → “Cộng vào biến tổng”

b)

“Sắp xếp mảng” → “Chọn thuật toán sắp xếp” → “Viết code”

c)

“Kiểm tra số nguyên tố” → “Duyệt từ 2 đến căn n” → “Kiểm tra chia hết”

d)

“Tính trung bình” → “Nhập n” → “Tính tổng” → “Chia cho n”

42.

[TH] Trong làm mịn dần, một sai lầm thường gặp khiến chương trình khó hoàn thiện là:

a)

Chia nhỏ quá chậm

b)

Làm mịn quá mức chi tiết ngay từ bước đầu

c)

Không dùng hàm

d)

Dùng nhiều biến trung gian

43.

Khi mô tả đã được làm mịn đến mức có thể viết code ngay, bước tiếp theo là:

a)

Chuyển sang viết mã

b)

Kiểm thử

c)

Chọn kiểu dữ liệu chuẩn xác

d)

Phân tích lại bài toán

44.

[VDT] Cho mô tả sau cho bài toán “Tính tiền điện”: “Mức 1: Tính tiền điện → Mức 2: Nhập chỉ số → Tính số kWh → Tính tiền → In kết quả”. Để tiếp tục làm mịn bước Tính tiền, lựa chọn nào đúng?

a)

Chia nhỏ theo các mức giá điện

b)

Viết luôn đoạn code if–else

c)

Thay đổi biến đầu vào

d)

Tăng mức giá để tính nhanh hơn

45.

[TH] Phương pháp làm mịn dần đặc biệt phù hợp với dạng nào sau đây?

a)

Bài toán có nhiều bước xử lý liên tiếp

b)

Bài toán yêu cầu tối ưu hóa tốc độ

c)

Bài toán không có thuật toán rõ ràng

d)

Bài toán đơn giản chỉ có một phép tính

46.

Khi nào không nên tiếp tục làm mịn?

a)

Khi mô tả đã tương ứng 1–1 với mã nguồn

b)

Khi mô tả vẫn còn tổng quát

c)

Khi chi tiết còn mơ hồ

d)

Khi bài toán còn chưa rõ yêu cầu

47.

Trong phương pháp làm mịn dần, bước đầu tiên khi thiết kế chương trình là gì?

a)

Viết mã nguồn chi tiết

b)

Xác định dữ liệu vào/ra

c)

Chạy thử chương trình trước

d)

Tối ưu hoá vòng lặp ngay từ đầu

48.

Trong quy trình làm mịn dần, khi một bước lớn đã rõ ràng, ta làm gì tiếp theo?

a)

Tạm dừng và viết giao diện chương trình

b)

Chia bước đó thành các bước con nhỏ hơn, rõ ràng hơn

c)

Viết mã lệnh chi tiết ngay lập tức

d)

Xoá bước đó và làm lại từ đầu

49.

Điểm quan trọng khi ghi chép các bước trong phương pháp làm mịn dần là gì?

a)

Càng dài càng tốt

b)

Càng ngắn càng tốt, miễn đúng logic

c)

Viết các bước rõ ràng, dễ hiểu và có mức chi tiết phù hợp

d)

Phải giống y hệt sách giáo khoa

50.

[TH] Trong phương pháp làm mịn dần, vì sao phải chia bước lớn thành bước nhỏ?

a)

Để viết được nhiều mã hơn

b)

Để mã ngắn lại

c)

Giúp thuật toán dễ hiểu, dễ triển khai và dễ kiểm tra

d)

Vì giáo viên yêu cầu

51.

[TF4] Khi thiết kế chương trình theo phương pháp làm mịn dần, bước đầu tiên thường là:

a)

Viết mã hoàn chỉnh ngay từ đầu

b)

Tìm hiểu yêu cầu bài toán, xác định đầu vào và đầu ra của bài toán

c)

Chia bài toán thành các phần nhỏ và tiến hành làm mịn từng phần

d)

Thực hiện từng bước chi tiết theo thứ tự mà không cần phân tích tổng thể

52.

[TF4] Trong phương pháp làm mịn dần, khi thiết kế thuật toán sắp xếp chèn, bước nào sau đây là đúng?

a)

Đầu tiên, chèn phần tử A[i] vào đúng vị trí rồi mới tiến hành duyệt các phần tử còn lại

b)

Tạo biến value lưu phần tử đang xét, sau đó dịch chuyển các phần tử lớn hơn value sang phải

c)

Chỉ cần kiểm tra điều kiện A[j] < A[i] để xác định vị trí chèn phần tử

d)

Thực hiện tất cả các thao tác trên cùng một dòng lệnh để tăng hiệu suất

53.

Khi thiết kế chương trình theo làm mịn dần, tại sao cần xác định rõ dữ liệu vào/ra của từng mô-đun?

a)

Để dễ dàng kiểm soát lỗi khi triển khai mã nguồn.

b)

Vì đây là yêu cầu bắt buộc của mọi ngôn ngữ lập trình.

c)

Để mô-đun có thể hoạt động độc lập và dễ thay thế.

d)

Để giảm độ dài của thuật toán.

54.

Trong quá trình làm mịn dần, lỗi nào sau đây thường gặp nhất?

a)

Chia bước quá nhỏ dẫn đến rối và dư thừa.

b)

Mô tả bước làm mịn quá lớn, chưa đủ chi tiết để lập trình.

c)

Không thống nhất tên biến giữa các mô-đun.

d)

Mô tả bước làm mịn không khớp với mục tiêu tổng quát của thuật toán.

55.

Trong phương pháp làm mịn dần, điều gì giúp xác định khi nào một bước đã đủ chi tiết để chuyển sang bước lập trình?

a)

Khi bước đó có thể mô tả bằng một hoặc vài dòng lệnh.

b)

Khi không còn có thể chia nhỏ bước đó một cách hợp lý.

c)

Khi giáo viên cho phép viết mã.

d)

Khi bước đó có rõ đầu vào – đầu ra và thao tác xử lý.

56.

Trong phương pháp làm mịn dần, bước nào sau đây thể hiện đúng nguyên tắc “giảm dần mức trừu tượng”?

a)

Viết chi tiết từng dòng lệnh ngay sau bước mô tả tổng quát đầu tiên.

b)

Chuyển từ mô tả chung → mô tả trung bình → mô tả chi tiết.

c)

Thay đổi thứ tự các bước tùy cảm hứng lập trình.

d)

Viết luôn mã nguồn sau khi xác định được tên các mô-đun.

57.

Khi làm mịn bài toán “Tính tổng các số chẵn trong mảng”, bước nào là chi tiết hợp lý?

a)

Gọi hàm sum trực tiếp.

b)

Lặp qua từng phần tử và kiểm tra số chẵn.

c)

Sắp xếp mảng trước.

d)

Tạo một mảng mới.

58.

Một thuật toán được mô tả: “Tính tổng các phần tử dương trong mảng.” Bước làm mịn đúng nhất là:

a)

“Duyệt từng phần tử, nếu dương thì cộng vào tổng.”

b)

“Tính tổng.”

c)

“Lọc số dương rồi xử lý.”

d)

“Lặp lại cho đến khi hết mảng.”

59.

Khi làm mịn thuật toán tìm số lớn nhất trong mảng, bước làm mịn chi tiết đúng là:

a)

Đặt max = phần tử đầu tiên; duyệt từ phần tử thứ hai; nếu phần tử > max → cập nhật max.

b)

So sánh tất cả các số cùng lúc.

c)

In ra số lớn nhất.

d)

Sắp xếp mảng rồi lấy phần tử cuối.

60.

Trong bài toán mô phỏng việc rút tiền ATM, bước làm mịn hợp lý là:

a)

Kiểm tra số tiền yêu cầu có chia hết cho 50,00050{,}000 hay không.

b)

Rút tất cả tiền.

c)

Cộng tiền vào tài khoản.

d)

Không cần bước kiểm tra.

61.

Khi làm mịn bài toán phân loại học sinh theo điểm:

a)

Nếu điểm ≥ 88 → Giỏi; điểm ≥ 6.56.5 → Khá; điểm ≥ 55 → Trung bình; còn lại → Yếu.

b)

Tính tổng lớp.

c)

Chỉ xét điểm Toán.

d)

Tính điểm trung bình.

62.

Làm mịn bài toán kiểm tra mật khẩu mạnh:

a)

Kiểm tra có chữ hoa, chữ thường, số, ký tự đặc biệt.

b)

Kiểm tra độ dài chuỗi.

c)

Tính tổng số ký tự.

d)

Kiểm tra số chữ thường.

63.

Đâu là bước chưa đủ mịn khi thiết kế chương trình nhập và in ra số lớn nhất trong 3 số?

a)

Nhập a,b,ca, b, c .

b)

So sánh và chọn số lớn nhất.

c)

In kết quả.

d)

Kiểm tra từng cặp số và cập nhật biến max.

64.

Khi mô tả bước “Kiểm tra số hoàn hảo”, đâu là phiên bản làm mịn lần 1 hợp lý nhất?

a)

Tính tổng ước rồi so sánh với nn .

b)

Lặp từ 11 đến n1n-1 .

c)

Kiểm tra theo định nghĩa.

d)

Nhập nn , tìm tổng ước nhỏ hơn nn , so sánh.

65.

Bài toán: “Tính điểm trung bình 3 môn.” Làm mịn sao đi đáp án nào?

a)

Nhập điểm 3 môn.

b)

Kiểm tra điểm hợp lệ.

c)

Tính tổng.

d)

In ra điểm lớn nhất.

66.

Bạn được giao bài toán: “Tìm phần tử xuất hiện nhiều nhất trong mảng.” Bước nào sau đây không nên thực hiện ở giai đoạn làm mịn đầu?

a)

Chọn cấu trúc dữ liệu hỗ trợ đếm tần suất.

b)

Viết hàm hỗ trợ tìm tần suất.

c)

Cài đặt Python ngay.

d)

Phân rã bài toán thành 2 nhiệm vụ: đếm tần suất → tìm max.

67.

Đang làm mịn bài toán “Kiểm tra đối xứng chuỗi”. Bước hợp lý nhất là:

a)

Đảo chuỗi rồi so sánh.

b)

Duyệt hai đầu và so sánh từng cặp.

c)

In ra “đối xứng”.

d)

Kiểm tra ký tự đầu và cuối giống nhau.

68.

Bạn cần làm mịn dần bài toán “Kiểm tra mảng chỉ chứa số dương”. Trong 4 mô tả sau, đâu là thứ tự làm mịn hợp lý?

a)

Duyệt mảng → Kiểm tra từng phần tử → Nếu có phần tử ≤ 00 thì kết luận sai → In kết quả.

b)

Nếu có phần tử ≤ 00 thì kết luận sai → Duyệt mảng → Kiểm tra từng phần tử → In kết quả.

c)

Duyệt mảng → Nếu có phần tử ≤ 00 thì kết luận sai → In kết quả → Kiểm tra từng phần tử.

d)

In kết quả → Kiểm tra từng phần tử → Duyệt mảng → Nếu có phần tử ≤ 00 thì kết luận sai.

69.

Với bài toán làm mịn dần, bước nào sau đây là bước tổng quát nhất (làm mịn lần 1)?

a)

Viết mã chương trình ngay.

b)

Chia bài toán thành các nhiệm vụ chính.

c)

Tối ưu bộ nhớ.

d)

Kiểm thử đầu vào.

70.

Bước nào không phải là làm mịn?

a)

Thêm chi tiết vào từng thao tác.

b)

Chuyển từ mô tả tự nhiên sang mô tả gần giống mã giả.

c)

Viết mã Python hoàn chỉnh.

d)

Bổ sung điều kiện kiểm tra.

71.

Mục đích chính của làm mịn thuật toán là:

a)

Làm bài dài hơn.

b)

Giúp lập trình viên hiểu rõ từng bước.

c)

Chuyển thuật toán thành mã ngay lập tức.

d)

Tạo thêm nhiều hàm con.

72.

Làm mịn bài toán “Tính trung bình cộng của mảng” nên bắt đầu bằng:

a)

Nhập mảng.

b)

Tính tổng mảng.

c)

Chia tổng cho số phần tử.

d)

In kết quả.

73.

Đâu là bước làm mịn sai khi tìm số nhỏ nhất trong mảng?

a)

Giả sử min = phần tử đầu tiên.

b)

So sánh từng phần tử với min.

c)

Cập nhật min khi cần.

d)

Sắp xếp mảng rồi lấy phần tử đầu tiên.

74.

Trong làm mịn lần 2, mức độ chi tiết là:

a)

Tổng quát nhất.

b)

Rất chi tiết như mã giả hoàn chỉnh.

c)

Chi tiết vừa phải: phân rã từng bước chính.

d)

Không thêm chi tiết.

75.

Bài toán: “Đếm số phần tử âm”. Bước nào thuộc làm mịn hợp lý?

a)

Sắp xếp mảng.

b)

Tạo biến đếm = 00 .

c)

Vẽ lưu đồ.

d)

Gọi thư viện ngoài.

76.

Đâu là phiên bản làm mịn lần 1 đúng cho bài toán kiểm tra đối xứng chuỗi?

a)

So sánh từng cặp ký tự.

b)

Đảo chuỗi.

c)

Nhập chuỗi → Xác định cách kiểm tra → Kết luận.

d)

In kết quả.

77.

Làm mịn bài toán: “Tìm số lượng số chia hết cho kk ”. Bước nào không cần thiết?

a)

Duyệt từng phần tử.

b)

Kiểm tra a[i]%k==0a[i] \%\, k == 0 .

c)

Tăng biến đếm.

d)

Sắp xếp mảng.

78.

Bước làm mịn cho bài toán "Tìm vị trí phần tử x đầu tiên trong mảng" là gì?

a)

Dừng thuật toán sớm

b)

Duyệt mảng từ đầu đến cuối

c)

Lấy phần tử ở giữa

d)

Tạo mảng mới

79.

Đâu là mô tả quá mịn?

a)

Kiểm tra điều kiện

b)

Duyệt từng phần tử

c)

Viết từng câu lệnh if bằng Python

d)

Tính tổng

80.

Trong bài toán phân loại điểm, bước nào là làm mịn đúng?

a)

Kiểm tra điểm lớn hơn hoặc bằng 8

b)

In "Giỏi"

c)

Tính trung bình lớp

d)

Sắp xếp danh sách học sinh

81.

Bài toán: "Tính tổng các số lẻ trong mảng". Đâu là bước làm mịn sai?

a)

Nếu số đó là lẻ thì cộng vào tổng

b)

Tạo biến tổng = 0

c)

Nhập mảng

d)

Sắp xếp mảng trước

82.

Trong thiết kế thuật toán kiểm tra hoán vị, bước nào sau đây phù hợp để đảm bảo đây là một hoán vị của dãy số 1, 2, ..., n?

a)

Kiểm tra độ dài của dãy A và đảm bảo độ dài bằng n

b)

Kiểm tra xem tất cả các số từ 1 đến n có mặt trong dãy A hay không

c)

Tính tổng các phần tử trong dãy A và so sánh với tổng của dãy từ 1 đến n

d)

Sắp xếp dãy A và so sánh với dãy 1, 2, ..., n

83.

Trong nhiệm vụ đếm số lần lặp, bước nào dưới đây là hợp lý để tính số lần lặp của từng phần tử trong dãy A theo phương pháp làm mịn dần?

a)

Sử dụng một vòng lặp để duyệt từng phần tử của dãy A và đếm số lần xuất hiện của nó

b)

Sử dụng một hàm lặp để tính số lần lặp của một phần tử trong dãy A

c)

Sắp xếp dãy A để đếm số lần xuất hiện của các phần tử liền kề nhau

d)

So sánh mỗi phần tử với tất cả phần tử phía sau nó để kiểm tra trùng lặp

84.

Lợi ích của phương pháp thiết kế theo mô đun là gì?

a)

Dễ dàng bổ sung các mô đun mới

b)

Chương trình chạy nhanh hơn

c)

Các mô đun chỉ cần được sử dụng một lần

d)

Không ai được phép thay đổi, chỉnh sửa mô đun

85.

Công việc nào sau đây thuộc nhóm "Công việc nâng cấp một mô đun cũ"?

a)

Tạo báo cáo mới ghi doanh số bán trung bình trong ngày

b)

Thay đổi số lượng mặt hàng có doanh số cao nhất trong báo cáo

c)

Nhập thêm mặt hàng và doanh số mới vào tệp dữ liệu

d)

Thực hiện báo cáo riêng cho khách hàng

86.

Để thực hiện công việc bổ sung ghi lại 2 mặt hàng có doanh số cao nhất và 4 mặt hàng có doanh số thấp nhất, cần chỉnh sửa mô đun nào?

a)

NhapDL

b)

GhiDL

c)

Sxepx

d)

XuLyDL

87.

Thiết kế chương trình theo mô đun giúp dễ dàng nâng cấp và bổ sung vì lý do nào sau đây?

a)

Tất cả các mô đun được gộp thành một đoạn mã duy nhất

b)

Mỗi mô đun hoạt động độc lập và thực hiện một chức năng riêng

c)

Các mô đun không thể thay đổi hoặc cập nhật

d)

Chỉ làm mịn khi đã chia mô đun xong

88.

Trong phương pháp thiết kế chương trình theo mô đun, công việc "nhập dữ liệu từ tệp Data.inp và lưu vào hai mảng P và S" sẽ được thực hiện bởi mô đun nào?

a)

Mô đun xử lý dữ liệu

b)

Mô đun nhập dữ liệu

c)

Mô đun báo cáo

d)

Không mô đun nào thực hiện

89.

Trong thiết kế chương trình theo mô đun tính điểm tổng hợp của vận động viên, vai trò của mô đun nhapDL(inp) là gì?

a)

Đọc dữ liệu từ tệp, trả về danh sách mã số và điểm số của các vận động viên

b)

Tính điểm trung bình của từng vận động viên dựa trên điểm của giám khảo

c)

Ghi kết quả điểm tổng hợp vào tệp đầu ra

d)

Sắp xếp điểm tổng hợp theo thứ tự giảm dần và ghi vào tệp

90.

Phát biểu nào dưới đây sai về thiết kế chương trình theo mô đun?

a)

Tách bài toán lớn thành các bài toán con, sau đó thiết kế thuật toán và chương trình cho từng bài toán con

b)

Phát triển một bài toán lớn thành các bài toán lớn hơn rồi thiết kế cho từng bài toán lớn đó

c)

Mỗi mô đun có thể là một số hàm hoặc thủ tục độc lập

d)

Chương trình chính là một bản ghép nối các hàm và thủ tục con

91.

Ý nào sau đây không phải là lợi ích của việc thiết kế chương trình theo mô đun?

a)

Chương trình ngắn gọn, sáng sủa, dễ hiểu, dễ dàng bổ sung các mô đun mới

b)

Các mô đun được thiết lập một lần và sử dụng nhiều lần

c)

Dễ dàng nâng cấp, thay thế, chỉnh sửa mà không sợ làm xấu chất lượng toàn bộ chương trình

d)

Không thể chia sẻ trong môi trường làm việc nhóm do các mô đun phụ thuộc lẫn nhau

92.

Sắp xếp đúng thứ tự các bước thực hiện chương trình thiết kế theo mô đun: (1) Tách bài toán thành các bài toán nhỏ hơn. (2) Viết chương trình chính để ghép nối các hàm và thủ tục con. (3) Thiết kế thuật toán và chương trình cho từng mô đun con.

a)

(3) -> (2) -> (1)

b)

(2) -> (3) -> (1)

c)

(1) -> (2) -> (3)

d)

(1) -> (3) -> (2)

93.

Khi thiết kế chương trình cần thiết có tối đa bao nhiêu mô đun?

a)

1

b)

2

c)

5

d)

Không giới hạn

94.

Công ty XYZ đã có một chương trình quản lý bán hàng với nhiều tính năng khác nhau. Công ty muốn bổ sung tính năng khai thác thông tin lấy ý kiến phản hồi từ khách hàng. Công việc của người lập trình phần mềm thuộc loại công việc nào khi thiết kế chương trình theo mô đun?

a)

Nâng cấp mô đun

b)

Chỉnh sửa mô đun

c)

Tạo mô đun mới

d)

Thay đổi yêu cầu bài toán

95.

Mối quan hệ giữa làm mịn dần và thiết kế theo mô đun là gì?

a)

Hai khái niệm hoàn toàn không liên quan

b)

Làm mịn dần giúp chia chương trình thành các mô đun hợp lý

c)

Mô đun chỉ dùng ở bài toán lớn

d)

Chỉ làm mịn khi đã chia mô đun xong

96.

[TF4] Trong thiết kế mô-đun theo làm mịn dần, điều nào sau đây là đặc trưng tốt của một mô-đun?

a)

Mỗi mô-đun chỉ thực hiện một nhiệm vụ rõ ràng.

b)

Mô-đun càng lớn càng tốt để giảm số lượng mô-đun.

c)

Mô-đun độc lập với mô-đun khác càng nhiều càng tốt.

d)

Mọi mô-đun cần truy cập tất cả biến toàn cục để dễ dùng.

97.

[TF4] Điểm khác biệt lớn nhất giữa “làm mịn dần” và “chia bài toán thành mô đun” là:

a)

Làm mịn dần giúp chia bài toán thành các mô đun độc lập

b)

Làm mịn dần tập trung từ tổng quát → chi tiết, còn mô đun hóa tập trung vào chức năng độc lập

c)

Mô đun hóa không dùng trong bài toán lớn

d)

Hai phương pháp hoàn toàn giống nhau

98.

[TH] Các hàm có sẵn trong thư viện như sum, min, max được coi là gì trong chương trình?

a)

Các mô đun vì chúng thực hiện chức năng độc lập và có thể tái sử dụng.

b)

Không phải mô đun vì chúng không do người lập trình tự viết.

c)

Không phải mô đun vì chỉ có mô đun xử lý mới được gọi là mô đun.

d)

Không phải mô đun vì không thể chỉnh sửa mã bên trong.

99.

Chương trình dưới đây có mấy mô đun? Mã Python: def is_prime(number): if number < 2: return False for i in range(2, int(number**0.5) + 1): if number % i == 0: return False return True input_numbers = input("Nhập dãy số, cách nhau bởi dấu cách:") numbers = [int(num) for num in input_numbers.split()] for number in numbers: if is_prime(number): print(f"{number} là số nguyên tố.") else: print(f"{number} không là số nguyên tố.")

a)

1

b)

2

c)

3

d)

Không có mô đun nào

100.

Quan sát chương trình chính dưới đây và cho biết chương trình đã xây dựng bao nhiêu mô đun? Mã chương trình chính: #Chương trình chính finp = "SeaGames.inp" fout = "ketqua.out" DS, Diem = nhapDL(finp) kq=Xuly(Diem) sapxep(DS,Diem,kq) ghiDL(fout,DS,kq)

a)

1

b)

3

c)

4

d)

5

101.

[TH] Từ thứ tự lời gọi hàm trong chương trình chính dưới đây, nếu người dùng thay đổi thứ tự lời gọi hàm theo những cách khác nhau thì cách nào sau đây là đúng nhất? Mã chương trình chính với đánh dấu: #Chương trình chính finp = "SeaGames.inp" #1 fout = "ketqua.out" #2 DS, Diem = nhapDL(finp) #3 kq=Xuly(Diem) #4 sapxep(DS,Diem,kq) #5 ghiDL(fout,DS,kq) #6

a)

#1, #3, #2, #4.

b)

#3, #4, #1, #2.

c)

#2, #1, #4, #3.

d)

Không được thay đổi thứ tự lời gọi hàm.

102.

Mô đun nào sau đây là mô đun xử lý?

a)

Hàm nhập mảng từ bàn phím.

b)

Hàm hiển thị kết quả.

c)

Hàm tính số lượng phần tử âm trong mảng.

d)

Hàm in thông báo lỗi.

103.

[TH] Trong thực hành lập trình theo mô đun, lý do khiến mô đun nhập dữ liệu cần tách riêng là:

a)

Để dễ thay thế nguồn nhập dữ liệu khi cần.

b)

Để tăng tốc độ tính toán.

c)

Vì không thể viết chung với phần xử lý.

d)

Vì chương trình sẽ bị lỗi nếu nhập và xử lý cùng nhau.

104.

Mô đun xuất dữ liệu cần tuân theo nguyên tắc nào?

a)

Không được in nhiều hơn một dòng.

b)

Chỉ được in khi chương trình không có lỗi.

c)

Không thực hiện tính toán, chỉ hiển thị dữ liệu đầu ra.

d)

Phải gộp chung với mô đun nhập.

105.

Tại sao cần kiểm thử từng mô đun trước khi kiểm thử toàn bộ chương trình?

a)

Vì chương trình lớn không thể kiểm thử trực tiếp.

b)

Vì kiểm thử mô đun giúp phát hiện lỗi tại vị trí chính xác và tiết kiệm thời gian sửa lỗi.

c)

Vì quy định trong sách.

d)

Vì mô đun duy nhất gây lỗi các mô đun khác.

106.

Phương pháp thiết kế chương trình theo mô đun có ưu điểm nào sau đây?

a)

Làm chương trình ngắn gọn, dễ hiểu hơn

b)

Giảm khả năng tái sử dụng các phần của chương trình

c)

Hạn chế khả năng làm việc nhóm

d)

Giảm tính linh hoạt khi chỉnh sửa chương trình

107.

Một chương trình gồm ba mô đun: nhập mảng, tính tổng theo yêu cầu, in kết quả. Lỗi phổ biến khiến chương trình cho kết quả sai nhưng không báo lỗi là do:

a)

Hàm nhập đọc sai kiểu dữ liệu.

b)

Hàm xử lý sửa đổi sai biến hoặc không trả kết quả đúng cách.

c)

Mô đun in kết quả không có lệnh print.

d)

Tên hàm đặt không đúng quy tắc.

108.

Tại sao mô đun xuất kết quả không được thay đổi nội dung mảng gốc?

a)

Vì Python không cho phép thay đổi dữ liệu trong hàm in.

b)

Vì mô đun xuất chỉ có nhiệm vụ hiển thị, không được thực hiện xử lý.

c)

Vì thay đổi mảng sẽ làm chương trình bị lỗi cú pháp.

d)

Vì mô đun xuất luôn phải dùng biến cục bộ.

109.

Trong phương pháp thiết kế theo mô đun, công việc "tìm và sắp xếp các mặt hàng theo doanh số" sẽ được thực hiện bởi mô đun nào?

a)

Mô đun nhập dữ liệu

b)

Mô đun xử lý dữ liệu

c)

Mô đun báo cáo

d)

Không mô đun nào thực hiện

110.

[VDT] Khi thiết kế mô đun, tại sao không nên để một mô đun vừa nhập dữ liệu vừa xử lý?

a)

Vì chương trình chạy chậm hơn.

b)

Vì làm giảm tính tái sử dụng và khó kiểm thử riêng lẻ.

c)

Vì Python không cho phép nhập và xử lý trong cùng hàm.

d)

Vì sẽ gây lỗi cú pháp.

111.

Xét mô đun tính trung bình cộng của mảng, yêu cầu đúng là gì?

a)

Kiểm tra mảng có rỗng hay không trước khi tính.

b)

Cứ lấy tổng chia số phần tử.

c)

Mặc định mảng luôn có giá trị hợp lệ.

d)

Tính trung bình bằng cách lấy phần tử lớn nhất cộng nhỏ nhất rồi chia 2.

112.

Khi viết mô đun sắp xếp mảng giảm dần, mô tả làm mịn nào là sai?

a)

So sánh từng cặp phần tử.

b)

Đổi chỗ khi phần tử sau lớn hơn phần tử trước.

c)

Lặp cho đến khi mảng được sắp xếp.

d)

Chỉ cần kiểm tra một lần rồi kết luận.

113.

Lý do nào sau đây là sai khi nói lập trình mô đun giúp chương trình dễ bảo trì hơn?

a)

Mô đun chạy nhanh hơn hẳn bình thường.

b)

Khi sửa một mô đun, các mô đun khác không bị ảnh hưởng nếu giao diện không thay đổi.

c)

Mỗi mô đun đều có giao diện người dùng riêng.

d)

Mỗi mô đun đều phải viết lại từ đầu khi sửa lỗi.

114.

Trong chương trình tính điểm tổng hợp cho vận động viên, mô đun diem_gk(d) có vai trò gì?

a)

Tính điểm trung bình cộng của tất cả các giám khảo có hệ số 1.

b)

Tính điểm tổng hợp bao gồm hệ số 2 cho giám khảo đầu tiên và cuối cùng.

c)

Ghi kết quả điểm của từng vận động viên vào danh sách.

d)

Đọc dữ liệu điểm số của vận động viên từ tệp đầu vào.

115.

Với đoạn chương trình: fin = "Diemthi.txt"; fout = "Ketqua.txt"; X, Y = NhapDL(fin); Z = NhapDL(fin); Sapxep(X, Y, Z); GhiDL(fout, X, Y, Z). Khẳng định A: "Chương trình này gồm 6 mô đun" là đúng hay sai?

a)

Đúng

b)

Sai

116.

Với đoạn chương trình trên, khẳng định B: "Hai tệp Diemthi.txt và Ketqua.txt phải nằm ở hai thư mục khác nhau" là đúng hay sai?

a)

Đúng

b)

Sai

117.

Với đoạn chương trình trên, khẳng định C: "f1a là biến có kiểu dữ liệu xâu" là đúng hay sai?

a)

Đúng

b)

Sai

118.

Với đoạn chương trình trên, khẳng định D: "Đổi tên các biến X, Y, Z thành E, F, G không làm đổi kết quả" là đúng hay sai?

a)

Đúng

b)

Sai

119.

Một chương trình được tổ chức thành các mô đun theo thứ tự: NhapDL, Sapxep, XuLyDL, BaoCaoDL. Khẳng định A: "Mô đun nhập dữ liệu chỉ đọc dữ liệu từ tệp vào các mảng mà không sắp xếp" là đúng hay sai?

a)

Đúng

b)

Sai

120.

Với cùng chương trình mô đun trên, khẳng định B: "Mô đun báo cáo chỉ in kết quả, không phải lấy dữ liệu từ tệp ra rồi sắp xếp" là đúng hay sai?

a)

Đúng

b)

Sai

121.

Với cùng chương trình mô đun trên, khẳng định C: "Mô đun báo cáo là để sắp xếp dữ liệu" là đúng hay sai?

a)

Đúng

b)

Sai

122.

Với cùng chương trình mô đun trên, khẳng định D: "Tất cả các mô đun được gộp thành một đoạn mã duy nhất với một từ khóa def" là đúng hay sai?

a)

Đúng

b)

Sai

123.

Thư viện chương trình là gì?

a)

Một tập hợp các tệp mã nguồn độc lập.

b)

Một tập hợp các hàm dùng chung cho nhiều chương trình khác nhau.

c)

Một cách tổ chức mã nguồn của một chương trình thành nhiều phần.

d)

Một tập hợp các tệp lưu trữ dữ liệu.

124.

Để nhập toàn bộ thư viện math vào bộ nhớ, lệnh đúng là gì?

a)

import math

b)

math import

c)

import math as

d)

from math import sqrt, floor, ceil

125.

Trong Python, lệnh from math import sqrt, floor, ceil có nghĩa là gì?

a)

Nhập toàn bộ thư viện math vào bộ nhớ.

b)

Chỉ nhập ba hàm sqrt, floor và ceil từ thư viện math.

c)

Chỉ sử dụng thư viện math mà không đưa vào bộ nhớ.

d)

Nhập thư viện math và đổi tên hàm sqrt thành floor.

126.

Muốn dùng hàm sin trong thư viện math, cú pháp cần dùng là gì?

a)

print(math)

b)

sin(math)

c)

math.sin()

d)

sin()

127.

Câu lệnh from math import sqrt cho phép điều gì?

a)

Dùng sqrt mà không cần gõ math.sqrt.

b)

Dùng toàn bộ thư viện math.

c)

Đổi tên thư viện.

d)

Không thể dùng hàm khác ngoài sqrt.

128.

Lợi ích của việc chỉ nhập một vài hàm từ thư viện là gì?

a)

Làm chương trình gọn hơn và chạy nhanh hơn.

b)

Chương trình không chạy được.

c)

Làm máy tính nhanh hơn phần cứng.

d)

Không có lợi ích gì.

129.

Lệnh nào không hợp lệ khi nhập thư viện?

a)

import math

b)

from math import *

c)

import math, random

d)

import(math)

130.

Khi dùng import math as m, vì sao phải viết m.sqrt(9) thay vì sqrt(9)?

a)

Vì sqrt bị khóa.

b)

Vì tên thư viện đã được thay thế bằng m.

c)

Vì Python yêu cầu vậy.

d)

Vì sqrt không tồn tại trong math.

131.

Đoạn lệnh nào giúp nhập tất cả hàm của math trực tiếp mà không cần tiền tố math?

a)

import math

b)

from math import *

c)

import math as *

d)

import * from math

132.

Lệnh nào là phù hợp nhất khi chỉ dùng đúng 1 hàm của thư viện math?

a)

import math

b)

import math as m

c)

from math import hàm_cần_dùng

d)

from math import math

133.

Câu lệnh nào đúng để nhập hai thư viện math và random?

a)

import math, random

b)

include math, random

c)

import math; import random

d)

from math, random import *

134.

Lệnh nào dùng để xem danh sách hàm trong thư viện math?

a)

list(math)

b)

print(math)

c)

help(math)

d)

math()

135.

Khi chỉ muốn đưa vào bộ nhớ các hàm sqrt, floor và ceil của math, cú pháp đúng là gì?

a)

import math.sqrt, math.floor, math.ceil

b)

from math import sqrt, floor, ceil

c)

import math(sqrt, floor, ceil)

d)

math.import(sqrt, floor, ceil)

136.

Khi tạo thư viện tự viết, điều nào sau đây đúng?

a)

File thư viện đặt cùng thư mục với chương trình chính.

b)

Bắt buộc đặt trong thư mục System32.

c)

Không thể tạo thư viện trong Python.

d)

Phải nén file mới dùng được.

137.

Muốn dùng hàm sqrt trong thư viện math sau khi import math, cú pháp đúng là gì?

a)

sqrt(9)

b)

math.sqrt(9)

c)

import sqrt

d)

sqrt.math(9)

138.

Lệnh nào đúng để xem mô tả hàm sqrt?

a)

help(sqrt)

b)

sqrt.help()

c)

doc sqrt

d)

info sqrt

139.

Kết quả của import math as m là gì?

a)

Thư viện math bị xóa.

b)

Thư viện math được đổi tên thành m.

c)

Sinh lỗi.

d)

Tạo một thư viện mới.

140.

Lệnh nào hợp lý?

a)

import(math)

b)

import math, random

c)

math import

d)

from math import

141.

Vì sao nên dùng from math import sqrt khi chỉ cần sqrt?

a)

Chương trình gọn và nhanh hơn.

b)

Không cần thư viện.

c)

Python bắt buộc.

d)

sqrt không có trong math.

142.

Lệnh nào đúng để đổi tên hàm khi import?

a)

from math import sqrt rename cbh

b)

from math import sqrt as cbh

c)

rename sqrt cbh

d)

import sqrt as cbh

143.

Trong thực hành thiết lập thư viện, việc tạo mô đun giúp điều gì?

a)

Giảm tốc độ chạy.

b)

Chương trình rõ ràng và tái sử dụng.

c)

Chương trình khó đọc hơn.

d)

Không có tác dụng gì.

144.

Cú pháp nào sai?

a)

import math

b)

from math import sqrt

c)

import math as m

d)

import math sqrt

145.

Điều kiện để dùng sqrt(9) mà không cần tiền tố math là gì?

a)

import math

b)

math.import sqrt

c)

from math import sqrt

d)

sqrt là hàm mặc định của Python

146.

Khi viết mô đun tự tạo, tên file phải như thế nào?

a)

Trùng tên hàm.

b)

Kết thúc bằng .py.

c)

Viết số liền, không dấu cách.

d)

Có chữ "Mô đun".

147.

Lệnh nào đúng khi nhập ba hàm sqrt, sin và cos?

a)

import math.sqrt, math.sin, math.cos

b)

from math import sqrt, sin, cos

c)

import sqrt, sin, cos

d)

import math(sqrt, sin, cos)

148.

Nếu muốn dùng thư viện tự viết tên là mylib.py, dùng lệnh nào?

a)

import mylib

b)

include mylib

c)

mylib import

d)

load mylib

149.

Trong bài “Thực hành thiết lập thư viện cho chương trình”, học sinh cần điều gì?

a)

Viết hàm trong file riêng rồi nhập vào chương trình chính.

b)

Viết tất cả mã trong một file.

c)

Sao chép thư viện hệ thống.

d)

Không dùng thư viện.

150.

Muốn dùng hàm sum2 trong tệp add.py, cách gọi đúng là gì?

a)

import — sum2(x, y)

b)

from add import sum2 — sum2(x, y)

c)

import sum2 from add — sum2(x, y)

d)

import add — add(sum2)