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 :(((
Code tính tổng 1 + 1 /2 + 1/3 + . . + 1/n cho ra kết quả sai
Trong dòng lệnh print cho n làm gì @@
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 đó.
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?
Đó 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 . 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
Sửa lại
sum += 1 / (float)i;
đú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
À. 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. Mà là
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
Ò ò. Ok mình hiểu r thankiu :>