JavaScript is required

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? (Kết quả lấy tròn 2 số sau dấu thập phân)

int main() {

double a = 4, xn, kq, dem = 0;

xn = (a + 1) / 2;

do {

kq = xn; xn = 0.5 * (xn + a/xn);

dem++;

} while (fabs(xn - kq) > 0.001);

cout << kq;

return 0;

}

A.

2

B.

1.41

C.

1.73

D.

3

Trả lời:

Đáp án đúng: A


Đoạn chương trình tính căn bậc hai của một số bằng phương pháp Newton. Ban đầu, `a` được gán bằng 4, và `xn` được khởi tạo bằng (a + 1) / 2 = 2.5. Vòng lặp `do...while` lặp lại cho đến khi giá trị tuyệt đối của sự khác biệt giữa `xn` và `kq` nhỏ hơn hoặc bằng 0.001. Trong mỗi lần lặp: 1. `kq` được gán bằng giá trị hiện tại của `xn`. 2. `xn` được cập nhật bằng công thức `xn = 0.5 * (xn + a/xn)`. 3. `dem` tăng lên 1. Vòng lặp dừng lại khi `fabs(xn - kq) <= 0.001`. Các giá trị của xn trong mỗi lần lặp: - Lần 1: xn = 2.5, kq = 2.5, xn = 0.5 * (2.5 + 4/2.5) = 0.5 * (2.5 + 1.6) = 2.05 - Lần 2: xn = 2.05, kq = 2.05, xn = 0.5 * (2.05 + 4/2.05) = 0.5 * (2.05 + 1.951) = 2.0005 - Lần 3: xn = 2.0005, kq = 2.0005, |2.0005 - 2.0005| < 0.001. Vòng lặp dừng lại. Giá trị của `kq` sau khi vòng lặp kết thúc là khoảng 2.0005. Làm tròn đến hai chữ số thập phân, kết quả là 2.00. Vậy đáp án đúng là A. 2

Câu hỏi liên quan