Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?
struct hocsinh {
string hoten; int namsinh; } ;
int main() {
hocsinh hs[3]
hocsinh *p = hs;
for (int I = 0; i < 3; i++) {
p->namsinh = 1991 + i;
p++;
}
p = hs+1; p->namsinh -= 20; cout << hs[1].namsinh << endl; return 0;
}
Trả lời:
Đáp án đúng: A
Đoạn code C++ này sử dụng một struct `hocsinh` để lưu trữ thông tin học sinh (tên và năm sinh). Chương trình tạo một mảng `hs` gồm 3 học sinh, sau đó sử dụng con trỏ `p` để duyệt và gán giá trị cho `namsinh` của từng học sinh. Ban đầu, vòng lặp gán `namsinh` cho các học sinh trong mảng `hs` như sau:
- hs[0].namsinh = 1991 + 0 = 1991
- hs[1].namsinh = 1991 + 1 = 1992
- hs[2].namsinh = 1991 + 2 = 1993
Sau vòng lặp, con trỏ `p` được gán lại bằng `hs + 1`, tức là `p` trỏ đến `hs[1]`. Sau đó, `hs[1].namsinh` được giảm đi 20 đơn vị: `hs[1].namsinh = 1992 - 20 = 1972`.
Cuối cùng, chương trình in ra giá trị của `hs[1].namsinh`, là 1972.
Vậy đáp án đúng là A. 1972