Kết quả chương trình sau là gì:
#include
Void hoanvi (int px, int py)
{
Int pz;
Pz=px; px=py; py=pz;
};
Void main ()
{
Int a=15, b=21; hoanvi (a, B) ;
Printf ( "%d %d", a, B) ;
};
Trả lời:
Đáp án đúng: B
Chương trình C này minh họa việc truyền tham trị (pass by value) trong hàm `hoanvi`. Khi gọi `hoanvi(a, b)`, các bản sao của `a` và `b` được tạo ra và truyền vào hàm. Bên trong hàm `hoanvi`, các giá trị của các bản sao này được hoán đổi, nhưng các giá trị gốc của `a` và `b` trong hàm `main` không bị ảnh hưởng.
Do đó, sau khi gọi `hoanvi`, `a` vẫn là 15 và `b` vẫn là 21. Lệnh `printf` sẽ in ra "15 21".
Lỗi biên dịch:
Trong đoạn mã nguồn, biến `B` được sử dụng trong hàm `main` và trong lệnh gọi hàm `printf`, nhưng biến `B` không được khai báo, mà biến `b` mới được khai báo. Do đó, trình biên dịch sẽ báo lỗi. Tuy nhiên, câu hỏi này kiểm tra kết quả thực thi chương trình, nên chúng ta cần giả sử rằng đây chỉ là một lỗi gõ máy và biến `b` được sử dụng đúng.
Vì vậy, đáp án đúng là "15 21".