JavaScript is required

Cho đoạn chương trình sau: struct { int to; float soluong;} x[10] for (int i=0; i<10; i++) scanf(“%d%f”,&x[i].to,&x[i].soluong);Chọn câu đúng nhất trong các câu sau:

A.

Đoạn chương trình trên có lỗi cú pháp.

B.

Không được phép sử dụng toán tử lấy địa chỉ đối với các thành phần “to” và “soluong”.

C.

Lấy địa chỉ thành phần “soluong” dẫn đến chương trình hoạt động không đúng đắn.

D.
Cả 3 ý trên đều sai.
Trả lời:

Đáp án đúng: C


Đoạn chương trình khai báo một mảng `x` gồm 10 phần tử, mỗi phần tử là một cấu trúc (struct) chứa hai trường: `to` (kiểu int) và `soluong` (kiểu float). Sau đó, chương trình sử dụng một vòng lặp `for` để nhập giá trị cho các trường `to` và `soluong` của từng phần tử trong mảng `x` bằng hàm `scanf`. Phân tích các lựa chọn: * **A. Đoạn chương trình trên có lỗi cú pháp.** Câu này sai. Đoạn chương trình không có lỗi cú pháp nào. * **B. Không được phép sử dụng toán tử lấy địa chỉ đối với các thành phần “to” và “soluong”.** Câu này sai. Trong C, toán tử `&` (lấy địa chỉ) hoàn toàn hợp lệ và cần thiết để truyền địa chỉ của biến cho hàm `scanf` để hàm này có thể gán giá trị trực tiếp vào biến đó. * **C. Lấy địa chỉ thành phần “soluong” dẫn đến chương trình hoạt động không đúng đắn.** Câu này sai. Việc lấy địa chỉ của `x[i].soluong` là hoàn toàn đúng để hàm `scanf` có thể gán giá trị kiểu float vào biến này. * **D. Cả 3 ý trên đều sai.** Câu này đúng vì cả ba ý A, B, C đều sai. Vậy đáp án đúng là D.

Câu hỏi liên quan