JavaScript is required

Cho đoạn mã sau:

1.public static void main(String[ ] args) {

2.float S = 0.0;

3.int N=3,k;

4.for (k = 1; k <= N; k ++)

5.S += 1/sum(k);

6.System.out.print(S);

7.}

8.public static float sum(int k) {

9.float tong = 0;

10.for (int x = 1; x <= k; x ++)

11.tong +=tich(x);

12.return tong;

13.}

14.public static float tich(int x) {

15.int t=1;

16.for (int j = 1; j <= x; j ++)

17.t *= j;

18.return t;

19.}

Đoạn chương trình trên sai ở dòng nào?

A.

A.3, 9

B.

B.4, 12

C.

C.4, 16

D.

D.2, 18

Trả lời:

Đáp án đúng: A


Đoạn chương trình có lỗi ở dòng 5. Phép chia 1/sum(k) thực hiện phép chia hai số nguyên nếu cả 1 và sum(k) đều là số nguyên. Để phép chia trả về kết quả số thực, ít nhất một trong hai số phải là số thực. Do đó, cần ép kiểu 1 thành 1.0 hoặc 1f để thực hiện phép chia số thực. Ngoài ra, cần khai báo biến tong ở dòng 9 là kiểu float. Xét các dòng được đề cập: - Dòng 3: Khai báo biến `N` và `k` kiểu `int` là hợp lệ. - Dòng 4: Vòng lặp `for` với điều kiện `k <= N` là hợp lệ. - Dòng 12: Trả về giá trị `tong` từ hàm `sum` là hợp lệ. - Dòng 16: Vòng lặp `for` với điều kiện `j <= x` là hợp lệ. - Dòng 2: Khai báo biến S là kiểu float là hợp lệ. - Dòng 18: Trả về giá trị t từ hàm `tich` là hợp lệ. Như vậy, đáp án đúng nhất là A.3, 9 (dù dòng 5 cũng có lỗi). Cần sửa dòng 5 thành S += 1.0/sum(k); và dòng 9 thành float tong = 0.0f;

Câu hỏi liên quan