Trả lời:
Đáp án đúng: A
The code initializes two integer variables, `a` and `b`, with values 5 and 3 respectively. It then calculates the sum of `a` and `b` and stores it in `c` (c = 8). Next, it updates `a` to `c - a` (a = 8 - 5 = 3) and `b` to `c - b` (b = 8 - 3 = 5). Finally, it outputs the sum of the updated `a` and `b` (3 + 5 = 8). Thus, the program outputs 8.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: B
Toán tử `new` trong C++ (và nhiều ngôn ngữ lập trình khác) được sử dụng để cấp phát bộ nhớ động. Bộ nhớ này được cấp phát từ heap (vùng nhớ động).
* Stack: Stack là vùng nhớ được quản lý tự động bởi hệ thống, thường được sử dụng cho các biến cục bộ và các lời gọi hàm. Bộ nhớ trên stack được cấp phát và giải phóng theo cơ chế LIFO (Last-In, First-Out). Vì vậy, stack không phù hợp cho việc cấp phát bộ nhớ động theo yêu cầu của lập trình viên.
* Heap: Heap là vùng nhớ được quản lý bởi hệ thống, cho phép lập trình viên cấp phát và giải phóng bộ nhớ một cách linh hoạt. Toán tử `new` cấp phát bộ nhớ từ heap, và toán tử `delete` (hoặc các cơ chế quản lý bộ nhớ khác) được sử dụng để giải phóng bộ nhớ đã cấp phát.
* Register: Register là các thanh ghi trong CPU, được sử dụng để lưu trữ dữ liệu và địa chỉ một cách nhanh chóng. Register không phải là vùng nhớ để cấp phát bộ nhớ động.
Do đó, đáp án đúng là Heap.
* Stack: Stack là vùng nhớ được quản lý tự động bởi hệ thống, thường được sử dụng cho các biến cục bộ và các lời gọi hàm. Bộ nhớ trên stack được cấp phát và giải phóng theo cơ chế LIFO (Last-In, First-Out). Vì vậy, stack không phù hợp cho việc cấp phát bộ nhớ động theo yêu cầu của lập trình viên.
* Heap: Heap là vùng nhớ được quản lý bởi hệ thống, cho phép lập trình viên cấp phát và giải phóng bộ nhớ một cách linh hoạt. Toán tử `new` cấp phát bộ nhớ từ heap, và toán tử `delete` (hoặc các cơ chế quản lý bộ nhớ khác) được sử dụng để giải phóng bộ nhớ đã cấp phát.
* Register: Register là các thanh ghi trong CPU, được sử dụng để lưu trữ dữ liệu và địa chỉ một cách nhanh chóng. Register không phải là vùng nhớ để cấp phát bộ nhớ động.
Do đó, đáp án đúng là Heap.
Lời giải:
Đáp án đúng: B
Constructor không thể là virtual. Constructor có nhiệm vụ tạo ra đối tượng thuộc một kiểu dữ liệu cụ thể. Tính chất virtual dùng để giải quyết bài toán đa hình (polymorphism) khi ta làm việc với con trỏ hoặc tham chiếu đến lớp cơ sở (base class) và muốn gọi các hàm đã được ghi đè (override) ở lớp con (derived class) tương ứng với kiểu dữ liệu thực tế của đối tượng mà con trỏ/tham chiếu đó trỏ tới. Vì constructor phải biết chính xác kiểu dữ liệu của đối tượng cần tạo, nên việc khai báo constructor là virtual không có ý nghĩa và bị cấm trong C++.
Lời giải:
Đáp án đúng: A
Đoạn code sử dụng các toán tử tăng trước (++i), hoặc (||) và và (&&). Thứ tự ưu tiên của các toán tử này là ++i (tăng trước), sau đó là && và cuối cùng là ||. Tuy nhiên, trong C, các toán tử logic như || và && có tính chất "short-circuit evaluation". Điều này có nghĩa là nếu kết quả của biểu thức đã được xác định từ toán hạng đầu tiên, toán hạng thứ hai sẽ không được đánh giá.
Trong biểu thức `m = ++i || ++j && ++k;`:
1. `++i` sẽ tăng `i` lên 4. Vì `i` bây giờ là 4 (khác 0), `++i` trả về giá trị true (1).
2. Do toán tử `||` (hoặc) có tính chất short-circuit, và toán hạng đầu tiên `++i` đã là true, toàn bộ biểu thức `++i || ++j && ++k` sẽ được coi là true mà không cần đánh giá `++j && ++k`.
3. Vì vậy, `++j` và `++k` sẽ không được thực thi, `j` và `k` giữ nguyên giá trị ban đầu.
4. `m` sẽ nhận giá trị true, tương đương với 1.
Kết quả cuối cùng là `i = 4`, `j = 2`, `k = -1`, và `m = 1`.
Vậy đáp án đúng là: A. 4 2 -1 1
Trong biểu thức `m = ++i || ++j && ++k;`:
1. `++i` sẽ tăng `i` lên 4. Vì `i` bây giờ là 4 (khác 0), `++i` trả về giá trị true (1).
2. Do toán tử `||` (hoặc) có tính chất short-circuit, và toán hạng đầu tiên `++i` đã là true, toàn bộ biểu thức `++i || ++j && ++k` sẽ được coi là true mà không cần đánh giá `++j && ++k`.
3. Vì vậy, `++j` và `++k` sẽ không được thực thi, `j` và `k` giữ nguyên giá trị ban đầu.
4. `m` sẽ nhận giá trị true, tương đương với 1.
Kết quả cuối cùng là `i = 4`, `j = 2`, `k = -1`, và `m = 1`.
Vậy đáp án đúng là: A. 4 2 -1 1
Lời giải:
Đáp án đúng: C
Đoạn code này sử dụng vòng lặp `for` và cấu trúc `switch`. Ta cần theo dõi giá trị của `i` trong mỗi lần lặp.
- Lần lặp 1: `i = 0`. `switch(0)`: `case 0: i += 5;` (i = 5). Sau đó `default: i += 4; break;` (i = 9). In ra 9.
- Lần lặp 2: `i = 9`. `switch(9)`: `default: i += 4; break;` (i = 13). In ra 13.
- Lần lặp 3: `i = 13`. `switch(13)`: `default: i += 4; break;` (i = 17). In ra 17.
- Lần lặp 4: `i = 17`. `switch(17)`: `default: i += 4; break;` (i = 21). In ra 21. Vòng lặp dừng vì `i` không còn nhỏ hơn 20.
Như vậy, không có đáp án nào đúng trong các lựa chọn đã cho.
- Lần lặp 1: `i = 0`. `switch(0)`: `case 0: i += 5;` (i = 5). Sau đó `default: i += 4; break;` (i = 9). In ra 9.
- Lần lặp 2: `i = 9`. `switch(9)`: `default: i += 4; break;` (i = 13). In ra 13.
- Lần lặp 3: `i = 13`. `switch(13)`: `default: i += 4; break;` (i = 17). In ra 17.
- Lần lặp 4: `i = 17`. `switch(17)`: `default: i += 4; break;` (i = 21). In ra 21. Vòng lặp dừng vì `i` không còn nhỏ hơn 20.
Như vậy, không có đáp án nào đúng trong các lựa chọn đã cho.
Lời giải:
Đáp án đúng: C
Đoạn code có hai vòng lặp `while`. Vòng lặp bên ngoài kiểm tra điều kiện `i < 2`. Vòng lặp bên trong kiểm tra điều kiện `j < 3`. Tuy nhiên, điểm mấu chốt nằm ở lệnh `goto l1;` trong vòng lặp bên trong.
Ban đầu, `i = 0` và `j = 0`. Vòng lặp bên ngoài chạy. Vòng lặp bên trong cũng chạy vì `j < 3`. Trong vòng lặp bên trong, lệnh `printf("loop\n");` in ra "loop" và sau đó lệnh `goto l1;` nhảy đến nhãn `l1:`, làm tăng `i` lên 1. `j` không bao giờ được tăng, và vì thế vòng lặp bên trong sẽ luôn chạy nếu nó được bắt đầu, tức là `i` sẽ tăng liên tục và in ra "loop" liên tục mà không bao giờ dừng lại. Do đó, chương trình sẽ rơi vào vòng lặp vô hạn và in ra "loop" liên tục.
Vì vậy, đáp án đúng là B. Infinite loop
Ban đầu, `i = 0` và `j = 0`. Vòng lặp bên ngoài chạy. Vòng lặp bên trong cũng chạy vì `j < 3`. Trong vòng lặp bên trong, lệnh `printf("loop\n");` in ra "loop" và sau đó lệnh `goto l1;` nhảy đến nhãn `l1:`, làm tăng `i` lên 1. `j` không bao giờ được tăng, và vì thế vòng lặp bên trong sẽ luôn chạy nếu nó được bắt đầu, tức là `i` sẽ tăng liên tục và in ra "loop" liên tục mà không bao giờ dừng lại. Do đó, chương trình sẽ rơi vào vòng lặp vô hạn và in ra "loop" liên tục.
Vì vậy, đáp án đúng là B. Infinite loop
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