Có một lỗi trong chương trình dưới đây. Bạn sẽ thêm câu lệnh nào để xóa nó?
Trả lời:
Đáp án đúng: A
Đề bài cho một đoạn code C++ bị lỗi biên dịch. Lỗi này xảy ra do hàm `f` được gọi trước khi được khai báo hoặc định nghĩa. Để giải quyết lỗi này, ta cần thêm một "function prototype" (nguyên mẫu hàm) trước khi hàm `main` được định nghĩa. Nguyên mẫu hàm cho trình biên dịch biết về sự tồn tại của hàm, kiểu trả về và các tham số của hàm, giúp trình biên dịch kiểm tra tính hợp lệ của các lời gọi hàm. Trong đoạn code, hàm `f` được gọi với một `int` và một `float`, vì vậy nguyên mẫu hàm phải phù hợp với kiểu tham số này.
* **Phương án A:** `float f(int, float);` - **Đúng**. Nguyên mẫu này khai báo một hàm `f` trả về kiểu `float` và nhận hai tham số: một `int` và một `float`. Điều này khớp với cách hàm `f` được gọi trong hàm `main`. Vì vậy, phương án này đúng.
* **Phương án B:** `float f(a, b);` - **Sai**. Nguyên mẫu này không hợp lệ trong C++. Nó thiếu kiểu dữ liệu của các tham số `a` và `b`.
* **Phương án C:** `float f(float a, int b)` - **Sai**. Nguyên mẫu này khai báo một hàm `f` trả về kiểu `float`, nhưng nhận tham số theo thứ tự `float` rồi `int`, không khớp với cách hàm `f` được gọi trong hàm `main` (gọi với `int` rồi `float`).