Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Cơ Sở Lập Trình - Đề 02 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 lập trình, thuật ngữ "biến" dùng để chỉ điều gì?
- A. Một loại hàm đặc biệt để thực hiện các phép toán.
- B. Một vùng nhớ được đặt tên, dùng để lưu trữ dữ liệu có thể thay đổi trong quá trình chạy chương trình.
- C. Một giá trị không đổi được gán cho một định danh.
- D. Một chỉ thị để điều khiển luồng thực thi của chương trình.
Câu 2: Kiểu dữ liệu "int" thường được sử dụng để lưu trữ loại dữ liệu nào trong lập trình C?
- A. Số nguyên.
- B. Số thực.
- C. Ký tự.
- D. Chuỗi ký tự.
Câu 3: Toán tử "%" trong ngôn ngữ C được gọi là toán tử gì và thực hiện phép toán nào?
- A. Toán tử chia, thực hiện phép chia lấy phần nguyên.
- B. Toán tử nhân, thực hiện phép nhân hai số.
- C. Toán tử modulo, thực hiện phép chia lấy phần dư.
- D. Toán tử phần trăm, tính phần trăm của một số.
Câu 4: Cấu trúc điều khiển "if-else" trong lập trình được sử dụng để làm gì?
- A. Lặp lại một khối lệnh nhiều lần.
- B. Khai báo biến và cấp phát bộ nhớ.
- C. Định nghĩa và gọi hàm.
- D. Thực hiện có điều kiện một khối lệnh dựa trên một biểu thức logic.
Câu 5: Vòng lặp "for" thường được sử dụng khi nào?
- A. Khi cần lặp vô hạn lần.
- B. Khi biết trước số lần lặp hoặc có thể xác định số lần lặp dựa trên một biến đếm.
- C. Khi cần lặp cho đến khi một điều kiện sai.
- D. Khi cần thực hiện một khối lệnh ít nhất một lần.
Câu 6: Hàm (function) trong lập trình có vai trò chính là gì?
- A. Quản lý bộ nhớ cho chương trình.
- B. Khai báo các biến toàn cục.
- C. Tổ chức mã nguồn thành các khối lệnh có thể tái sử dụng, giúp chương trình dễ đọc và bảo trì hơn.
- D. Thực hiện các phép toán số học phức tạp.
Câu 7: Tham số (parameter) trong định nghĩa hàm là gì?
- A. Biến được khai báo trong danh sách tham số của hàm, dùng để nhận giá trị đầu vào khi hàm được gọi.
- B. Giá trị trả về của hàm sau khi thực hiện.
- C. Tên của hàm.
- D. Khối lệnh bên trong thân hàm.
Câu 8: Biến cục bộ (local variable) là gì?
- A. Biến được khai báo bên ngoài tất cả các hàm và có thể truy cập từ bất kỳ đâu trong chương trình.
- B. Biến chỉ được sử dụng trong hàm "main()".
- C. Biến được khai báo trong một chương trình con khác (không phải hàm).
- D. Biến được khai báo bên trong một hàm hoặc khối lệnh và chỉ có thể được truy cập trong phạm vi đó.
Câu 9: Toán tử "==" dùng để làm gì trong ngôn ngữ C?
- A. Gán giá trị bên phải cho biến bên trái.
- B. So sánh bằng hai giá trị hoặc biểu thức.
- C. Tăng giá trị của biến lên 1.
- D. Giảm giá trị của biến xuống 1.
Câu 10: Mảng (array) trong lập trình là gì?
- A. Một kiểu dữ liệu đặc biệt chỉ chứa số nguyên.
- B. Một cấu trúc dữ liệu để lưu trữ các hàm.
- C. Một tập hợp các phần tử có cùng kiểu dữ liệu, được lưu trữ liên tiếp trong bộ nhớ và có thể truy cập thông qua chỉ số.
- D. Một cách để tạo ra các biến toàn cục.
Câu 11: Trong ngôn ngữ C, chuỗi ký tự (string) thường được biểu diễn như thế nào?
- A. Kiểu dữ liệu "string".
- B. Kiểu dữ liệu "char".
- C. Kiểu dữ liệu "array".
- D. Mảng các ký tự (char array), kết thúc bằng ký tự null " ".
Câu 12: Con trỏ (pointer) trong C là gì?
- A. Một biến đặc biệt lưu trữ địa chỉ bộ nhớ của một biến khác.
- B. Một kiểu dữ liệu dùng để lưu trữ số thực lớn.
- C. Một hàm đặc biệt dùng để quản lý bộ nhớ.
- D. Một cách để định nghĩa các hàm đệ quy.
Câu 13: Toán tử "&" (address-of operator) được sử dụng để làm gì với một biến trong C?
- A. Thực hiện phép AND bitwise.
- B. Khai báo một biến tham chiếu.
- C. Lấy địa chỉ bộ nhớ của biến.
- D. Giải phóng bộ nhớ đã cấp phát cho biến.
Câu 14: Hàm "printf()" trong C được sử dụng để làm gì?
- A. Nhập dữ liệu từ bàn phím.
- B. In dữ liệu ra màn hình console.
- C. Đọc dữ liệu từ file.
- D. Ghi dữ liệu vào file.
Câu 15: Hàm "scanf()" trong C được sử dụng để làm gì?
- A. Nhập dữ liệu từ bàn phím.
- B. In dữ liệu ra màn hình console.
- C. Đọc dữ liệu từ file.
- D. Ghi dữ liệu vào file.
Câu 16: Sự khác biệt chính giữa vòng lặp "while" và "do-while" là gì?
- A. Vòng lặp "while" chỉ có thể lặp với số lần cố định, còn "do-while" thì không.
- B. Vòng lặp "do-while" kiểm tra điều kiện lặp trước khi thực hiện thân vòng lặp, còn "while" thì kiểm tra sau.
- C. Vòng lặp "while" không thể sử dụng điều kiện lặp phức tạp, còn "do-while" thì có thể.
- D. Vòng lặp "do-while" đảm bảo thân vòng lặp được thực hiện ít nhất một lần, ngay cả khi điều kiện lặp ban đầu đã sai, còn "while" thì không.
Câu 17: Trong ngôn ngữ C, "struct" (cấu trúc) được sử dụng để làm gì?
- A. Tạo ra các hàm đặc biệt.
- B. Định nghĩa các kiểu dữ liệu cơ bản mới.
- C. Nhóm các biến có kiểu dữ liệu khác nhau lại thành một kiểu dữ liệuComposite do người dùng định nghĩa.
- D. Quản lý bộ nhớ động.
Câu 18: Biểu thức "a && b" trong C sẽ trả về giá trị đúng (true) khi nào?
- A. Khi "a" đúng hoặc "b" đúng.
- B. Khi cả "a" và "b" đều đúng.
- C. Khi "a" đúng và "b" sai.
- D. Khi "a" sai và "b" đúng.
Câu 19: Biểu thức "a || b" trong C sẽ trả về giá trị đúng (true) khi nào?
- A. Khi "a" đúng hoặc "b" đúng (hoặc cả hai).
- B. Khi cả "a" và "b" đều đúng.
- C. Khi cả "a" và "b" đều sai.
- D. Chỉ khi "a" và "b" khác nhau về giá trị đúng/sai.
Câu 20: Điều gì xảy ra khi bạn cố gắng truy cập một phần tử mảng vượt quá kích thước đã khai báo trong C?
- A. Chương trình sẽ tự động mở rộng kích thước mảng.
- B. Trình biên dịch sẽ báo lỗi.
- C. Có thể gây ra lỗi thời gian chạy (runtime error) hoặc hành vi không xác định, thường dẫn đến crash chương trình hoặc kết quả sai.
- D. Chương trình sẽ bỏ qua yêu cầu truy cập và tiếp tục thực hiện.
Câu 21: Cho đoạn code C sau:
```c
int x = 5;
int ptr = &x;
ptr = 10;
```
Giá trị của "x" sau khi thực hiện đoạn code trên là bao nhiêu?
- A. 5
- B. 10
- C. Địa chỉ của x
- D. Không xác định
Câu 22: Hàm "malloc()" trong C được sử dụng để làm gì?
- A. Giải phóng bộ nhớ đã cấp phát.
- B. Thay đổi kích thước bộ nhớ đã cấp phát.
- C. Khai báo biến toàn cục.
- D. Cấp phát một khối bộ nhớ động trong heap.
Câu 23: Kiểu dữ liệu "float" thường được sử dụng để lưu trữ loại số nào?
- A. Số nguyên lớn.
- B. Số thực có độ chính xác đơn.
- C. Số nguyên nhỏ.
- D. Số thực có độ chính xác kép.
Câu 24: Trong C, tiền xử lý (preprocessor) là gì và thực hiện công việc gì?
- A. Một phần của trình biên dịch chịu trách nhiệm tối ưu hóa code.
- B. Một công cụ để debug chương trình.
- C. Một giai đoạn trước khi biên dịch thực sự, xử lý các chỉ thị tiền xử lý như #include, #define, etc.
- D. Một trình thông dịch mã C.
Câu 25: Chỉ thị "#include " dùng để làm gì?
- A. Bao gồm nội dung của file header "stdio.h" vào chương trình, cung cấp các hàm chuẩn vào/ra như "printf()" và "scanf()".
- B. Khai báo một hàm main trong chương trình.
- C. Biên dịch chương trình C.
- D. Liên kết chương trình với thư viện chuẩn.
Câu 26: Đệ quy (recursion) trong lập trình là gì?
- A. Một kỹ thuật lặp sử dụng vòng lặp "for".
- B. Một phương pháp lập trình trong đó một hàm tự gọi chính nó để giải quyết một bài toán.
- C. Một cách để khai báo biến toàn cục.
- D. Một kỹ thuật để tối ưu hóa tốc độ chương trình.
Câu 27: Khi nào nên sử dụng cấu trúc "switch-case" thay vì "if-else if-else"?
- A. Khi cần kiểm tra điều kiện phức tạp.
- B. Khi cần lặp lại một khối lệnh.
- C. Khi cần kiểm tra giá trị của một biến với nhiều trường hợp khác nhau (giá trị rời rạc).
- D. Khi cần thực hiện một khối lệnh ít nhất một lần.
Câu 28: Sự khác biệt giữa biên dịch (compilation) và thông dịch (interpretation) là gì?
- A. Biên dịch tạo ra mã máy chạy chậm hơn thông dịch.
- B. Thông dịch tạo ra file thực thi độc lập, biên dịch thì không.
- C. Cả hai đều là quá trình chuyển đổi mã nguồn thành mã máy dòng lệnh.
- D. Biên dịch chuyển đổi toàn bộ mã nguồn thành mã máy trước khi thực thi, còn thông dịch thực thi mã nguồn từng dòng một.
Câu 29: Mã giả (pseudocode) là gì và dùng để làm gì?
- A. Một cách mô tả thuật toán hoặc logic chương trình bằng ngôn ngữ tự nhiên kết hợp với một số quy ước lập trình, giúp lập kế hoạch trước khi viết code thực sự.
- B. Mã máy sau khi đã biên dịch.
- C. Một loại ngôn ngữ lập trình bậc cao.
- D. Mã nguồn của các thư viện chuẩn.
Câu 30: Quy trình phát triển phần mềm cơ bản thường bao gồm các bước nào theo thứ tự?
- A. Kiểm thử -> Thiết kế -> Phân tích yêu cầu -> Viết mã -> Bảo trì
- B. Phân tích yêu cầu -> Thiết kế -> Viết mã -> Kiểm thử -> Bảo trì
- C. Viết mã -> Kiểm thử -> Phân tích yêu cầu -> Thiết kế -> Bảo trì
- D. Bảo trì -> Kiểm thử -> Viết mã -> Thiết kế -> Phân tích yêu cầu