JavaScript is required

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?

A.

structure STUDENT {char Name[] int s1,s2,s3;};

B.

struct STUDENT {char Name[] int s1, s2, s3;};

C.

typedef struct STUDENT {char Name[] float s1,s2,s3;};

D.
typedef STUDENT { char Name[] int s1, s2, s3;};
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ảng Name[] không chỉ rõ kích thước. Các biến điểm khai báo kiểu int là không phù hợp, cần khai báo kiểu số thực (float hoặc double) để 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ảng Name[] không chỉ rõ kích thước và các biến điểm khai báo kiểu int 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ểu float 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ới struct 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ảng Name[] không chỉ rõ kích thước và các biến điểm khai báo kiểu int là không phù hợp.

Vậy đáp án đúng nhất là C.

Câu hỏi liên quan