Lệnh fflush (stdin) dùng để làm gì:
Trả lời:
Đáp án đúng: B
Lệnh fflush(stdin)
được sử dụng để xóa sạch bộ nhớ đệm (buffer) của luồng đầu vào chuẩn (standard input), thường là bàn phím. Điều này hữu ích khi chương trình cần đảm bảo rằng không có dữ liệu thừa còn sót lại trong bộ đệm từ các lần nhập trước, có thể gây ra các hành vi không mong muốn. Vì vậy, đáp án C là chính xác nhất, đáp án B chính xác nhưng chưa rõ ràng bằng.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: D
Trong biểu thức logic, các toán tử được ưu tiên theo thứ tự sau: NOT (phủ định) có độ ưu tiên cao nhất, sau đó đến AND (và), và cuối cùng là OR (hoặc) có độ ưu tiên thấp nhất. Điều này có nghĩa là các phép toán NOT sẽ được thực hiện trước, sau đó đến AND, và cuối cùng là OR. Ví dụ, trong biểu thức `A AND NOT B OR C`, `NOT B` sẽ được tính trước, sau đó đến `A AND (NOT B)`, và cuối cùng là `(A AND (NOT B)) OR C`.
Như vậy, đáp án đúng là D. NOT, AND, OR.
Như vậy, đáp án đúng là D. NOT, AND, OR.
Lời giải:
Đáp án đúng: B
Trong C/C++, kiểu `void *` là một kiểu con trỏ đặc biệt, nó có thể trỏ đến bất kỳ kiểu dữ liệu nào. Do đó, ta có thể gán một con trỏ kiểu khác cho `void *` một cách an toàn mà không cần ép kiểu. Tuy nhiên, khi gán ngược lại (từ `void *` sang một kiểu con trỏ cụ thể), ta cần ép kiểu tường minh để trình biên dịch biết kiểu dữ liệu mà con trỏ `void *` đang trỏ tới.
Xét các phương án:
A. `tongquat = nguyen;` Hợp lệ vì gán con trỏ `int *` cho `void *`.
B. `*nguyen = *tongquat;` Không hợp lệ vì `tongquat` là `void *`, cần ép kiểu về `int *` trước khi giải tham chiếu. Ví dụ: `*nguyen = *(int*)tongquat;` mới đúng.
C. `kitu = (char) tongquat;` Không hợp lệ. Phép ép kiểu `(char)` sẽ chuyển giá trị của con trỏ `tongquat` thành kiểu `char`, sau đó gán giá trị `char` này cho `kitu`. `kitu` là một con trỏ `char *`, phải nhận một địa chỉ, không phải một giá trị `char`. Phải ép kiểu con trỏ `tongquat` về `char*` trước khi gán: `kitu = (char*)tongquat;`
D. `tongquat = kitu;` Hợp lệ vì gán con trỏ `char *` cho `void *`.
Vậy, phương án B và C đều không hợp lệ, nhưng câu hỏi chỉ yêu cầu chọn một đáp án, và đáp án B thể hiện rõ hơn về lỗi gán giá trị không tương thích giữa các kiểu dữ liệu khi giải tham chiếu con trỏ `void *` mà không ép kiểu. Tuy nhiên, vì phương án C cũng sai nên ta chọn B là đáp án sai rõ ràng hơn.
Xét các phương án:
A. `tongquat = nguyen;` Hợp lệ vì gán con trỏ `int *` cho `void *`.
B. `*nguyen = *tongquat;` Không hợp lệ vì `tongquat` là `void *`, cần ép kiểu về `int *` trước khi giải tham chiếu. Ví dụ: `*nguyen = *(int*)tongquat;` mới đúng.
C. `kitu = (char) tongquat;` Không hợp lệ. Phép ép kiểu `(char)` sẽ chuyển giá trị của con trỏ `tongquat` thành kiểu `char`, sau đó gán giá trị `char` này cho `kitu`. `kitu` là một con trỏ `char *`, phải nhận một địa chỉ, không phải một giá trị `char`. Phải ép kiểu con trỏ `tongquat` về `char*` trước khi gán: `kitu = (char*)tongquat;`
D. `tongquat = kitu;` Hợp lệ vì gán con trỏ `char *` cho `void *`.
Vậy, phương án B và C đều không hợp lệ, nhưng câu hỏi chỉ yêu cầu chọn một đáp án, và đáp án B thể hiện rõ hơn về lỗi gán giá trị không tương thích giữa các kiểu dữ liệu khi giải tham chiếu con trỏ `void *` mà không ép kiểu. Tuy nhiên, vì phương án C cũng sai nên ta chọn B là đáp án sai rõ ràng hơn.
Lời giải:
Đáp án đúng: D
Câu hỏi này kiểm tra kiến thức về các khái niệm cơ bản trong lập trình hướng đối tượng (OOP), đặc biệt là liên quan đến việc ẩn thông tin và quản lý dữ liệu.
* Encapsulation (Đóng gói): Là việc gói dữ liệu (thuộc tính) và phương thức (hành vi) hoạt động trên dữ liệu đó vào trong một đơn vị duy nhất, thường là một lớp. Mục đích là để bảo vệ dữ liệu khỏi sự truy cập trực tiếp từ bên ngoài và kiểm soát cách dữ liệu được sử dụng.
* Information Hiding (Ẩn thông tin): Là nguyên tắc che giấu các chi tiết triển khai bên trong của một lớp và chỉ cung cấp giao diện cần thiết cho người dùng. Điều này giúp giảm sự phụ thuộc giữa các phần của chương trình và làm cho mã dễ bảo trì và thay đổi hơn. Ẩn thông tin thường được thực hiện thông qua việc sử dụng các từ khóa như `private`, `protected` để giới hạn phạm vi truy cập.
* Data Abstraction (Trừu tượng hóa dữ liệu): Là quá trình đơn giản hóa các đối tượng phức tạp bằng cách chỉ hiển thị các đặc điểm và hành vi cần thiết cho người dùng, đồng thời ẩn đi các chi tiết không cần thiết. Abstraction tập trung vào "cái gì" chứ không phải "như thế nào".
Trong ngữ cảnh của câu hỏi, việc thiết kế các lớp theo cách ẩn các chi tiết triển khai khỏi người dùng liên quan đến cả đóng gói (encapsulation), ẩn thông tin (information hiding) và trừu tượng hóa dữ liệu (data abstraction). Do đó, đáp án chính xác nhất là "All of the above".
* Encapsulation (Đóng gói): Là việc gói dữ liệu (thuộc tính) và phương thức (hành vi) hoạt động trên dữ liệu đó vào trong một đơn vị duy nhất, thường là một lớp. Mục đích là để bảo vệ dữ liệu khỏi sự truy cập trực tiếp từ bên ngoài và kiểm soát cách dữ liệu được sử dụng.
* Information Hiding (Ẩn thông tin): Là nguyên tắc che giấu các chi tiết triển khai bên trong của một lớp và chỉ cung cấp giao diện cần thiết cho người dùng. Điều này giúp giảm sự phụ thuộc giữa các phần của chương trình và làm cho mã dễ bảo trì và thay đổi hơn. Ẩn thông tin thường được thực hiện thông qua việc sử dụng các từ khóa như `private`, `protected` để giới hạn phạm vi truy cập.
* Data Abstraction (Trừu tượng hóa dữ liệu): Là quá trình đơn giản hóa các đối tượng phức tạp bằng cách chỉ hiển thị các đặc điểm và hành vi cần thiết cho người dùng, đồng thời ẩn đi các chi tiết không cần thiết. Abstraction tập trung vào "cái gì" chứ không phải "như thế nào".
Trong ngữ cảnh của câu hỏi, việc thiết kế các lớp theo cách ẩn các chi tiết triển khai khỏi người dùng liên quan đến cả đóng gói (encapsulation), ẩn thông tin (information hiding) và trừu tượng hóa dữ liệu (data abstraction). Do đó, đáp án chính xác nhất là "All of the above".
Lời giải:
Đáp án đúng: D
Constructor sao chép được sử dụng để khởi tạo một đối tượng mới từ một đối tượng đã tồn tại. Nó cũng có thể được sử dụng để sao chép một đối tượng vào một đối tượng đã tồn tại (mặc dù toán tử '=' thường được sử dụng cho mục đích này). Do đó, tất cả các tùy chọn A, B và C đều đúng.
Lời giải:
Đáp án đúng: C
Trong ngôn ngữ lập trình C, quy tắc đặt tên biến như sau:
- Tên biến có thể chứa chữ cái (a-z, A-Z), chữ số (0-9) và dấu gạch dưới (_).
- Tên biến phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới.
- Tên biến phân biệt chữ hoa và chữ thường.
- Tên biến không được trùng với các từ khóa của ngôn ngữ C.
Phân tích các phương án:
- A. diem toan: Sai, vì có khoảng trắng trong tên biến.
- B. 3diemtoan: Sai, vì bắt đầu bằng chữ số.
- C. _diemtoan: Đúng, vì bắt đầu bằng dấu gạch dưới và tuân thủ các quy tắc khác.
- D. -diemtoan ZUNIA12: Sai, vì bắt đầu bằng dấu gạch ngang và có khoảng trắng.
Vậy, đáp án đúng là C.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy
89 tài liệu310 lượt tải

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin
125 tài liệu441 lượt tải

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông
104 tài liệu687 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán
103 tài liệu589 lượt tải

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp
377 tài liệu1030 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
99 tài liệu1062 lượt tải
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.
77.000 đ/ tháng