Cho các khai báo sau:struct ngay{ int ng, th, n;} vaotruong, ratruong; typedef struct sinhvien{ char hoten; ngay ngaysinh;};Hãy chọn câu đúng nhất:
Trả lời:
Đáp án đúng: B
Phân tích câu hỏi:
Câu hỏi này kiểm tra kiến thức về cấu trúc (struct) trong ngôn ngữ lập trình C, bao gồm cách khai báo, sử dụng và truy cập các thành phần của cấu trúc.
Đánh giá các phương án:
- Phương án A: Đúng. Vì `struct ngay` không có toán tử gán mặc định, và nếu không được định nghĩa rõ ràng, việc gán trực tiếp `vaotruong = ratruong` là không được phép trong C (trừ khi sử dụng các phương pháp như sao chép từng thành phần hoặc sử dụng con trỏ).
- Phương án B: Sai. "sinhvien" là tên kiểu (typedef), không phải tên cấu trúc trực tiếp. struct sinhvien {...} định nghĩa một cấu trúc, còn typedef struct sinhvien {...} sinhvien; tạo ra một bí danh (alias) tên sinhvien cho kiểu cấu trúc đó. "vaotruong" và "ratruong" là tên biến cấu trúc của kiểu struct ngay.
- Phương án C: Sai. Cách truy xuất đến các thành phần "vaotruong.ng" và "ratruong.th" là đúng. Tuy nhiên, "sinhvien.vaotruong.n" là sai vì "sinhvien" là một kiểu (typedef), không phải là một biến cấu trúc, và nó cũng không chứa trực tiếp "vaotruong". Để truy cập đến thành phần n, chúng ta cần một biến kiểu sinhvien, ví dụ sv.ngaysinh.n.
- Phương án D: Sai. Vì phương án B và C sai.
Kết luận:
Phương án A là đáp án đúng nhất.





