JavaScript is required

Hãy xem xét đoạn mã sau có lỗi ở dòng nào:
1. class Lopl
2. {
3. private:
4. int a,b;
5. friend voidNhap();
6. };
7. class Lop2
8. {
9. private:
10. float x,y;
11. friend void Nhap( );
12. };
13. void nhap()
14. {
15. Lop 1 obj 1; Lop2 obj 2;
16. cout«"\n\t Nhap a ="; cin»objl.a;
17. cout«"\n\t Nhap x cin»obj2.x;
18. }

A.

Không lỗi ở dòng nào

B.

Lỗi tại dòng 15

C.

Lỗi tại dòng 13

D.
Lỗi tại dòng 16, 17
Trả lời:

Đáp án đúng: A


Đoạn mã có một số lỗi cú pháp và logic cần được chỉ ra: * **Dòng 1:** Tên lớp `Lopl` có lẽ là một lỗi đánh máy. Nó nên là `Lop1` để phù hợp với việc sử dụng ở dòng 15. Tuy nhiên, lỗi chính tả này một mình nó không gây ra lỗi biên dịch nếu không có tham chiếu đến `Lop1` ở những nơi khác. * **Dòng 5 và 11:** `friend voidNhap();` và `friend void Nhap( );`. Ở đây, hàm friend được khai báo là `Nhap` trong `Lop1` và `Nhap` trong `Lop2`. Các hàm friend được khai báo nhưng chưa được định nghĩa. Tên hàm có thể gây nhầm lẫn với `nhap()` ở dòng 13. Đây không phải là lỗi biên dịch, nhưng là một vấn đề thiết kế có thể gây nhầm lẫn. * **Dòng 13:** `void nhap()` định nghĩa một hàm toàn cục. Trong hàm này, bạn cố gắng tạo các đối tượng `obj1` thuộc lớp `Lop 1` (lại là lỗi chính tả, phải là `Lop1`) và `obj2` thuộc lớp `Lop2`. * **Dòng 15:** `Lop 1 obj 1; Lop2 obj 2;`. Ở đây có một lỗi chính tả lớn: `Lop 1` phải là `Lop1`. Nếu không sửa lỗi chính tả này, chương trình sẽ không biên dịch được. * **Dòng 16 và 17:** `cout«"\n\t Nhap a ="; cin»objl.a;` và `cout«"\n\t Nhap x cin»obj2.x;`. Toán tử `«` và `»` bị ngược. Phải là `cout <<` và `cin >>`. Như vậy, lỗi tập trung ở dòng 16 và 17 do sử dụng sai toán tử nhập xuất `<<` và `>>` đồng thời có lỗi chính tả ở dòng 15.

Cùng ôn thi với bộ câu hỏi trắc nghiệm môn Lập trình hướng đối tượng có đáp án mà tracnghiem.net chia sẽ dưới đây, nhằm giúp các bạn sinh viên chuyên ngành chuẩn bị cho kì thi sắp tới.


50 câu hỏi 60 phút

Câu hỏi liên quan