JavaScript is required

Cho các khai báo sau. Hãy chọn câu đúng nhất:
struct ngay {
int ng, th, n;
}
vaotruong, ratruong;
typedef struct sinhvien {
char hoten;
ngay ngaysinh;
};

A.
Không được phép gán: vaotruong = ratruong;
B.
“sinhvien” là tên cấu trúc, “vaotruong”, “ratruong” là tên biến cấu trúc.
C.
Có thể viết “vaotruong.ng”, “ratruong.th”, “sinhvien.vaotruong.n” để truy xuất đến các thành phần tương ứng.
D.
A, B, C đều đúng
Trả lời:

Đáp án đúng: B


Đầu tiên, ta xét khai báo struct ngay. vaotruong và ratruong là các biến kiểu struct ngay, do đó có thể gán vaotruong = ratruong. Vậy A sai. "ngay" là tên cấu trúc, vaotruong và ratruong là tên biến cấu trúc kiểu "ngay". "sinhvien" là tên kiểu dữ liệu do typedef định nghĩa, không phải tên cấu trúc. Vậy B sai. Có thể viết “vaotruong.ng”, “ratruong.th” để truy xuất đến các thành phần tương ứng của biến cấu trúc kiểu "ngay". Tuy nhiên, "sinhvien" là tên kiểu dữ liệu, không phải tên biến cấu trúc, và vaotruong là biến cấu trúc kiểu "ngay" chứ không phải kiểu "sinhvien", do đó không thể viết "sinhvien.vaotruong.n". Vậy C sai. Vì A, B, C đều sai nên D sai. Tuy nhiên nếu đề bài cho là hãy chọn câu sai nhất, thì đáp án là B vì sinhvien là một kiểu dữ liệu được định nghĩa bằng typedef, chứ không phải là tên của một cấu trúc (struct). Còn vaotruong và ratruong là biến cấu trúc.

Tổng hợp 600+ câu hỏi trắc nghiệm lập trình C có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan