Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?
int main() {
float S = 0.0;
int N=2,k;
for (k = 1; k <= N; k++)
S += 1/sum(k);
cout << S;
return 0;
}
float sum(int k) { int tong = 0;
for (int x = 1; x <= k; x++)
tong += x;
return tong;
}
Trả lời:
Đáp án đúng: B
Đầu tiên, ta cần hiểu đoạn code C++ này thực hiện điều gì.
Hàm `sum(int k)` tính tổng các số từ 1 đến `k`. Ví dụ, `sum(1)` trả về 1, `sum(2)` trả về 1+2=3.
Trong hàm `main()`:
1. `S` được khởi tạo là 0.0 (kiểu float).
2. `N` được khởi tạo là 2.
3. Vòng lặp `for` chạy từ `k = 1` đến `k <= N` (tức là `k` chạy từ 1 đến 2).
4. Trong mỗi vòng lặp, `S` được cộng thêm `1/sum(k)`.
Vậy, ta có thể tính `S` như sau:
* Khi `k = 1`, `sum(1) = 1`, vậy `S += 1/1 = 1`. `S` trở thành 1.0.
* Khi `k = 2`, `sum(2) = 1 + 2 = 3`, vậy `S += 1/3 = 0.33333`. `S` trở thành 1.0 + 0.33333 = 1.33333.
Sau vòng lặp, `cout << S;` sẽ in ra giá trị của `S`, là 1.33333.
Vậy đáp án đúng là B. 1.33333