JavaScript is required

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

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: B


Đ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 thành phần: `to` (kiểu int) và `soluong` (kiểu float). Sau đó, chương trình sử dụng vòng lặp `for` để đọc dữ liệu nhập vào từ bàn phím cho từng phần tử của mảng `x`. Hàm `scanf` được sử dụng để đọc một số nguyên (`%d`) vào `x[i].to` và một số thực (`%f`) vào `x[i].soluong`. Toán tử `&` được sử dụng để lấy địa chỉ của các biến `x[i].to` và `x[i].soluong`, cần thiết cho `scanf` để lưu trữ các giá trị đã đọc vào đúng vị trí trong bộ nhớ. Phân tích các phương án: A. Sai. Đoạn chương trình không có lỗi cú pháp. B. Sai. Được phép sử dụng toán tử lấy địa chỉ `&` đối với các thành phần của cấu trúc. C. Sai. Việc lấy địa chỉ thành phần `soluong` là hoàn toàn hợp lệ và cần thiết để hàm `scanf` có thể lưu giá trị đọc được vào biến này. D. Đúng. Vì cả 3 ý trên đều sai. Vậy, đáp án đúng nhất là D.

Câu hỏi liên quan