wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Phần 8: Thuật toán, lập trình, chương trình

Total questions: 64

Worksheet time: 32mins

Name
Class
Date
1.

Thuật toán phải có đặc điểm:

a)

Dừng sau vô hạn bước

b)

Dừng sau hữu hạn bước

c)

Không cần dừng

d)

Các bước mập mờ

2.

Tính xác định của thuật toán nghĩa là:

a)

Mỗi bước có thể thực hiện theo nhiều cách khác nhau

b)

Mỗi bước của thuật toán được xác định rõ ràng

c)

Mỗi người hiểu theo cách riêng

d)

Có thể bỏ qua một số bước

3.

Một thuật toán có thể có nhiều cách biểu diễn khác nhau không?

a)

Không

b)

c)

Tùy ngôn ngữ

d)

Không cần thiết

4.

Các cách biểu diễn thuật toán phổ biến là:

a)

Lưu đồ và mã giả

b)

Biểu đồ Use Case

c)

Sơ đồ lớp

d)

Sơ đồ mạng

5.

Mục đích của lưu đồ (flowchart) là:

a)

Biểu diễn cấu trúc dữ liệu

b)

Minh họa trình tự thực hiện các bước của thuật toán

c)

Viết mã nguồn

d)

Thống kê dữ liệu

6.

Mã giả (pseudocode) thường dùng để:

a)

Mô tả ý tưởng thuật toán một cách gần gũi với lập trình

b)

Trình bày kết quả thực nghiệm

c)

Biên dịch chương trình

d)

Định nghĩa biến

7.

Trong lưu đồ, hình thoi thể hiện:

a)

Khởi đầu

b)

Kết thúc

c)

Lệnh gán

d)

Kiểm tra điều kiện 

8.

Độ phức tạp thời gian của thuật toán thể hiện:

a)

Số lượng phép toán cần thực hiện

b)

Số dòng mã

c)

Dung lượng bộ nhớ

d)

Tốc độ CPU

9.

Độ phức tạp không gian (bộ nhớ) thể hiện:

a)

Thời gian chạy

b)

Số biến hoặc vùng nhớ sử dụng

c)

Số lệnh

d)

Kết quả đầu ra

10.

Một thuật toán được xem là tốt khi:

a)

Đúng và nhanh

b)

Dễ nhìn

c)

Có nhiều bước

d)

Khó hiểu

11.

Ký hiệu Big-O dùng để:

a)

Chỉ tốc độ CPU

b)

Mô tả độ phức tạp thời gian hoặc không gian

c)

Đo tốc độ mạng

d)

Kiểm tra lỗi

12.

Nếu thuật toán có độ phức tạp O(n²), khi n tăng gấp đôi thì thời gian thực hiện:

a)

Tăng gấp đôi

b)

Tăng gấp bốn

c)

Giữ nguyên

d)

Giảm đi

13.

Chiến lược “Chia để trị” (Divide and Conquer) hoạt động bằng cách:

a)

Giải toàn bộ bài toán một lần

b)

Chia bài toán thành các bài toán con nhỏ hơn

c)

Dùng thuật toán ngẫu nhiên

d)

Không chia nhỏ

14.

Chiến lược “Tham lam” (Greedy) có đặc điểm:

a)

Chọn phương án tối ưu toàn cục ngay từ đầu

b)

Chọn phương án tối ưu cục bộ tại mỗi bước

c)

Luôn chọn phương án cuối cùng

d)

Không tối ưu hóa

15.

Thuật toán quy hoạch động (Dynamic Programming) dựa vào:

a)

Lưu trữ kết quả các bài toán con

b)

Chọn ngẫu nhiên

c)

Thử tất cả khả năng

d)

Đệ quy vô hạn

16.

Chương trình là:

a)

Một tập hợp câu lệnh cụ thể của ngôn ngữ lập trình

b)

Một sơ đồ thuật toán

c)

Một phần cứng

d)

Một hệ điều hành

17.

Lập trình là quá trình:

a)

Viết và chạy thử chương trình dựa trên thuật toán

b)

Viết báo cáo

c)

Chỉnh sửa phần cứng

d)

Giao tiếp với người dùng

18.

Lỗi cú pháp xảy ra khi:

a)

Sai logic

b)

Sai cấu trúc ngôn ngữ lập trình

c)

Kết quả sai

d)

Dữ liệu sai

19.

Gỡ lỗi (debug) là:

a)

Xoá dữ liệu

b)

Tìm và sửa lỗi trong chương trình

c)

Viết lại chương trình

d)

Dừng chương trình

20.

Ngôn ngữ lập trình bậc cao có đặc điểm:

a)

Gần với ngôn ngữ máy

b)

Gần với ngôn ngữ tự nhiên

c)

Khó hiểu

d)

Không biên dịch được

21.

Bước đầu tiên khi viết chương trình là:

a)

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

b)

Gỡ lỗi

c)

Viết mã

d)

Biên dịch

22.

Sau khi viết xong chương trình, ta cần:

a)

Nộp ngay

b)

Chạy thử và kiểm tra

c)

Xoá đi

d)

Không cần kiểm tra

23.

Việc thiết kế thuật toán là bước:

a)

A. Trước khi lập trình

b)

B. Sau khi chạy

c)

C. Trong lúc biên dịch

d)

D. Khi xuất kết quả

24.

Sau khi chương trình chạy đúng, bước cuối cùng là:

a)

Viết báo cáo hoặc đóng gói chương trình

b)

Xoá dữ liệu

c)

Dùng máy

d)

Lặp lại

25.

Môi trường lập trình là:

a)

Tập hợp công cụ hỗ trợ lập trình

b)

Một ngôn ngữ mới

c)

Một thuật toán

d)

Hệ điều hành

26.

Ví dụ về môi trường lập trình:

a)

Visual Studio

b)

Photoshop

c)

Excel

d)

AutoCAD

27.

IDE là viết tắt của:

a)

Integrated Design Environment

b)

Integrated Development Environment

c)

Internal Debug Environment

d)

Intelligent Data Engine

28.

Một IDE thường bao gồm:

a)

Trình soạn thảo mã, trình biên dịch, và trình gỡ lỗi

b)

Hệ điều hành

c)

Bộ vi xử lý

d)

Mạng Internet

29.

Lợi ích của IDE là:

a)

Giảm tốc độ lập trình

b)

Hỗ trợ biên dịch và gỡ lỗi nhanh

c)

Chỉ để viết văn bản

d)

Không cần thiết

30.

Tính đúng đắn của thuật toán được đảm bảo khi:

a)

Chạy không lỗi

b)

Cho kết quả đúng với mọi dữ liệu đầu vào

c)

Nhanh hơn các thuật toán khác

d)

Không sử dụng biến

31.

Trong lập trình, thiết kế chương trình con (hàm) giúp:

a)

Giảm khả năng tái sử dụng

b)

Dễ bảo trì, dễ đọc

c)

Tăng độ phức tạp

d)

Giảm hiệu suất

32.

Thuật toán đệ quy cần có:

a)

Gọi lại chính nó

b)

Vòng lặp vô hạn

c)

Không cần điều kiện dừng

d)

Biến toàn cục

33.

Nếu một thuật toán có độ phức tạp O(1), nghĩa là:

a)

Không phụ thuộc vào kích thước dữ liệu

b)

Tỷ lệ thuận với n

c)

Tuyến tính

d)

Rất chậm

34.

Tại sao cần phân tích độ phức tạp thuật toán?

a)

Để chọn thuật toán tối ưu nhất

b)

Để viết chương trình dễ hơn

c)

Để dịch sang ngôn ngữ máy

d)

Để tạo giao diện

35.

Khi một bài toán có nhiều cách giải, việc chọn thuật toán dựa trên:

a)

Sự quen thuộc

b)

Hiệu quả tính toán và bộ nhớ

c)

Độ dài mã

d)

Màu sắc IDE

36.

Kỹ thuật “Backtracking” được dùng để:

a)

Tối ưu hoá tuyến tính

b)

Tìm tất cả lời giải có thể bằng cách thử và loại bỏ

c)

Đếm số phần tử

d)

Giảm độ phức tạp

37.

Một thuật toán tham lam không luôn đảm bảo tối ưu vì:

a)

Chỉ chọn tối ưu cục bộ

b)

Không dừng

c)

Không dùng đệ quy

d)

Không lưu dữ liệu

38.

Khi thuật toán có độ phức tạp O(2n)O(2^n) , nó thuộc loại:

a)

Tuyến tính

b)

Lũy thừa

c)

Logarithmic

d)

Hằng số

39.

Mã giả giúp cho:

a)

Chuyển ý tưởng thành code dễ dàng hơn

b)

Làm báo cáo

c)

Gỡ lỗi

d)

Thiết kế giao diện

40.

Trong thuật toán, “break” có nghĩa là:

a)

Dừng hẳn chương trình

b)

Thoát khỏi vòng lặp hiện tại

c)

Quay lại đầu vòng lặp

d)

Tiếp tục bước sau

41.

Khi viết thuật toán, việc xác định rõ đầu vào và đầu ra giúp:

a)

Kiểm tra tính đúng đắn

b)

Làm đẹp mã

c)

Giảm số dòng

d)

Tăng tốc độ

42.

Cho mã giả: Tổng ← 0 For i ← 1 to 5 Tổng ← Tổng + i EndFor Kết quả cuối cùng là:

a)

A. 5

b)

B. 10

c)

C. 15

d)

D. 20

43.

Cho mã giả: If x > 0 then y ← 1 Else y ← -1 EndIf Nếu x = -3 thì y bằng:

a)

1

b)

-1

c)

0

d)

Không xác định

44.

Cho mã giả: For i ← 1 to 3 print(i * 2) EndFor Kết quả in ra:

a)

A. 2, 4, 6

b)

B. 1, 2, 3

c)

C. 3, 6, 9

d)

D. 6, 4, 2

45.

Cho mã giả: f ← 1 For i ← 1 to n f ← f * i EndFor Nếu n = 4 thì f = ?

a)

A. 12

b)

B. 16

c)

C. 24

d)

D. 10

46.

Cho mã giả: a ← 10 b ← 5 If a < b then max ← b Else max ← a EndIf Giá trị của max là:

a)

5

b)

10

c)

15

d)

0

47.

Cho mã giả: If n mod 2 = 0 then Print("Even") Else Print("Odd") EndIf Nếu n = 9 thì in ra:

a)

Even

b)

Odd

c)

9

d)

Error

48.

Cho mã giả:

i ← 1

While i < 4 do

 Print(i)

 i ← i + 1

EndWhile

Kết quả in ra:

a)

1, 2, 3 

b)

2, 3, 4

c)

0, 1, 2

d)

1, 2, 3, 4

49.

Cho mã giả: sum ← 0 For i ← 1 to 3 sum ← sum + i*i EndFor Kết quả:

a)

6

b)

14

c)

9

d)

10

50.

Cho mã giả: count ← 0 For i ← 1 to 5 If i mod 2 = 0 then count ← count + 1 EndIf EndFor Giá trị count là:

a)

A. 2

b)

B. 3

c)

C. 4

d)

D. 5

51.

Cho mã giả: max ← a If b > max then max ← b If c > max then max ← c Nếu a=5, b=9, c=7 thì max =

a)

5

b)

7

c)

9

d)

12

52.

Cho mã giả trong C/C++: int x = 5, y = 10; x = x + y - (y = x); printf("%d %d", x, y); Kết quả in ra là:

a)

5 10

b)

0 5

c)

10 5

d)

5 5

53.

Cho mã giả trong C/C++: int i, sum = 0; for(i = 1; i <= 5; i++) if(i % 2 == 0) sum += i; printf("%d", sum); Kết quả là:

a)

A. 6

b)

B. 8

c)

C. 6

d)

D. 10

54.

Cho mã giả trong C/C++: int i = 0; while(i < 5) { if(i == 3) break; i++; } printf("%d", i); Kết quả là:

a)

A. 3

b)

B. 4

c)

C. 5

d)

D. 0

55.

Cho mã giả trong C/C++: int a = 2, b = 3, c = 4; printf("%d", a + b * c / a);

a)

A. 7

b)

B. 8

c)

C. 9

d)

D. 12

56.

Cho mã giả trong C/C++: int n = 5, fact = 1; for(int i = 1; i <= n; i++) fact *= i; printf("%d", fact); Kết quả là:

a)

A. 24

b)

B. 120

c)

C. 60

d)

D. 720

57.

Cho mã giả trong C/C++: int arr[5] = {1, 2, 3, 4, 5}; int sum = 0; for(int i = 0; i < 5; i += 2) sum += arr[i]; printf("%d", sum); Kết quả là:

a)

A. 6

b)

B. 9

c)

C. 10

d)

D. 8

58.

Cho mã giả trong C/C++: int a = 10, b = 20; if(a = b) printf("Equal"); else printf("Not Equal"); Kết quả là:

a)

Equal

b)

Not Equal

c)

Error

d)

Không in gì

59.

Cho mã giả trong C/C++: int i = 1; do { printf("%d ", i); i += 2; } while(i < 8);

a)

1 2 3 4 5 6 7

b)

1 3 5 7

c)

1 3 5

d)

2 4 6 8

60.

Cho mã giả trong C/C++; void func(int n) { if(n == 0) return; printf("%d ", n); func(n - 1); } int main() { func(3); } Kết quả là:

a)

A. 3 2 1

b)

B. 1 2 3

c)

C. 3 3 3

d)

D. 0 1 2 3

61.

Cho mã giả trong C/C++; int f(int n) { if(n <= 1) return 1; return n * f(n - 2); } int main() { printf("%d", f(5)); } Kết quả là:

a)

A. 15

b)

B. 15

c)

C. 10

d)

D. 120

62.

Cho mã giả trong C/C++; int f(int n) { if(n == 1) return 1; else return n + f(n - 1); } int main() { printf("%d", f(4)); } Kết quả là:

a)

A. 6

b)

B. 10

c)

C. 4

d)

D. 7

63.

Cho mã giả trong C/C++; int a = 10; if(a > 5) if(a < 15) printf("A"); else printf("B"); else printf("C"); Kết quả là:

a)

A. A

b)

B. B

c)

C. C

d)

D. Không in gì

64.

Cho mã giả trong C/C++; int a = 0, b = 1, c, i; printf("%d %d ", a, b); for(i = 2; i < 6; i++) { c = a + b; printf("%d ", c); a = b; b = c; } Kết quả là:

a)

A. 0 1 1 2 3 5

b)

B. 0 1 1 3 5 8

c)

0 1 2 3 5 8

d)

1 1 2 3 5 8