Code tính tổng 1 + 1 /2 + 1/3 + . . + 1/n cho ra kết quả sai

Em vừa mới học lập trình C, ac nào rảnh xem qua bài này giúp em với chứ e ngồi đọc lại gần tiếng đòng hồ rồi nhưng mà không biết là sai ở đâu :(((

Tính tổng 1+1/2 +1/3+…1/n

Trong dòng lệnh print cho n làm gì @@

2 Likes

Lần sau nếu có hỏi kiểu như vậy phiền bạn post code nên rõ ràng nha. Và để biết cách post code nên bạn hãy đọc qua topic này. Chứ lần sau còn đăng ảnh thế bạn sẽ được nhận 1 :black_flag: đó. :smile:


Trở lại vấn đề của bạn.

Sau khi chạy hết for thì sum của bạn vẫn sẽ bằng chính nó công thêm 1. Do 1/i luôn bằng 0 (trừ khi i = 1).

Ủa! Sao lại vậy? :thinking:

Đó là do i của bạn để kiểu int, bạn phải ép về kiểu float thì mới có thể chia bình thường được :smile:. Còn nếu không thì cái dấu / sẽ là chia lấy nguyên. (chắc bạn hiểu r, minh không cần giải thích nữa :smile:

Sửa lại :point_down:

sum += 1 / (float)i;
3 Likes

đúng r :))) mình cũng vừa mới ngẫm ra đoạn ý. Run rồi ạ :>

mình run được rồi nha :> thankiu phản hồi của bạn :smile:

1 Like

À. Quên. Cho mình hỏi là tại sao lại phải khai báo là (float) vậy. Chỗ này mình chưa được học tới

Không phải là khai báo. :laughing: Mà là :point_down:

Bạn dùng (type of variable)<variable>. Để chuyển kiểu của biến(variable) về kiểu type of variable.

Ví dụ:

float a = 6.8;
int b = 2;
b = (int)a; // (int)a có giá trị là 6. 
printf("%d", b); // 6
5 Likes

Ò ò. Ok mình hiểu r thankiu :>

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?