Hãy khai báo một cấu trúc mô tả sinh viên, thông tin về mỗi sinh viên bao gồm: tên, điểm 3 môn học. Khai báo nào sau đây là đúng?
Trả lời:
Đáp án đúng: C
Để khai báo một cấu trúc (struct) trong C/C++, ta cần tuân theo cú pháp nhất định. Cấu trúc này dùng để nhóm các biến có kiểu dữ liệu khác nhau thành một đơn vị duy nhất. Trong trường hợp này, chúng ta cần khai báo một cấu trúc mô tả sinh viên, bao gồm tên (kiểu chuỗi ký tự) và điểm 3 môn học (kiểu số thực để có thể lưu điểm lẻ).
- Lựa chọn A: Sai vì sử dụng
structure
thay vìstruct
(trong C/C++, từ khóa đúng làstruct
). Hơn nữa, khai báo mảngName[]
không chỉ rõ kích thước. Các biến điểm khai báo kiểuint
là không phù hợp, cần khai báo kiểu số thực (float
hoặcdouble
) để lưu điểm chính xác hơn. - Lựa chọn B: Sai vì sử dụng
struct
đúng, nhưng khai báo mảngName[]
không chỉ rõ kích thước và các biến điểm khai báo kiểuint
là không phù hợp. - Lựa chọn C: Đúng vì sử dụng
typedef struct STUDENT
để định nghĩa một kiểu dữ liệu mới tên làSTUDENT
.char Name[]
không chỉ rõ kích thước (vấn đề này có thể được giải quyết bằng cách cấp phát động hoặc chỉ định kích thước tối đa). Điểm số s1, s2, s3 khai báo kiểufloat
là phù hợp để lưu điểm số có phần thập phân. - Lựa chọn D: Sai vì
typedef
cần đi kèm vớistruct
khi định nghĩa cấu trúc, vàSTUDENT
chưa được định nghĩa trước đó. Thêm vào đó, khai báo mảngName[]
không chỉ rõ kích thước và các biến điểm khai báo kiểuint
là không phù hợp.
Vậy đáp án đúng nhất là C.