JavaScript is required

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;

double diem;

} ;

double bac3 (double a,int x) {

double d = 1;

for (int i = 0; i < x; i++) d *= a;

return d;

}

int main() {

hocsinh hs[3]

hocsinh *p;

p = hs;

for (int i = 0; i < 3; i++) {

p->diem = 5;

p++;

}

cout << hs[0].diem << “, “ << bac3(hs[1].diem,2);

A.

5, 25, 125

B.

5, 25, 625

C.

5, 25

D.

5, 5

Trả lời:

Đáp án đúng: C


Đoạn chương trình khai báo một struct `hocsinh` với các trường `hoten`, `namsinh`, và `diem`. Hàm `bac3` tính lũy thừa bậc `x` của số `a`. Trong hàm `main`, một mảng `hs` gồm 3 phần tử kiểu `hocsinh` được khai báo, và một con trỏ `p` được gán địa chỉ của `hs`. Vòng lặp `for` duyệt qua 3 phần tử của mảng `hs` thông qua con trỏ `p`. Trong mỗi lần lặp, trường `diem` của phần tử hiện tại được gán giá trị 5, và con trỏ `p` được tăng lên để trỏ đến phần tử tiếp theo trong mảng. Do đó, sau vòng lặp, `hs[0].diem`, `hs[1].diem`, và `hs[2].diem` đều bằng 5. Dòng `cout` in ra giá trị của `hs[0].diem` và kết quả của `bac3(hs[1].diem, 2)`. `hs[0].diem` bằng 5. `bac3(hs[1].diem, 2)` tương đương với `bac3(5, 2)`, tính 5 mũ 2, kết quả là 25. Vì vậy, đầu ra sẽ là "5, 25".

Câu hỏi liên quan