01/10/2018, 00:05
Em mới học C có chỗ này thắc mắc,tại sao phải có ".0" hoặc (float)i thì mới dc ạ.hai cái đó có tác dụng gì vậy ạ
//Viết chương trình tính tổng nghịch đảo của N số nguyên đầu tiên theo công thức S = 1 + 1/2 + 1/3 + … + 1/N
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n;
float s=0;
printf("Nhap vao n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=s+1.0/i; //hay s=s+1/(float)i;
}
printf("%f",s);
return 0;
}
Bài liên quan
s=s+1.0/i; là phêp chia, nên kết quả có thể là số nguyên hoặc số thực(đa phần là số thực) nên bạn phải thêm 1.0 hawocj (float) để ép kiểu. Giả sử s=6+1/6, nếu không ép kiểu thì phép chia 1/6 sẽ lấu phần nguyên, là 0 nên sau khi tính s=6. Nếu
để 1.0 hoặc float vào đó thì kq sẽ là 6.166666 bạn ạ
Bạn phải dùng số thực trong toán hạng thì kết quả mới được số thực, còn không chỉ được phần nguyên của nó thôi. Cho nên phải ép kiểu, và có 2 cách:
.0
, mặc nhiên bạn đã làm cho phép chia với số nguyên thành phép chia với số thực(data_types)
để ép kiểu. Hiệu quả y xì, nhưng tổng quát hơn.ý của bạn là chỗ 1/i nó sẽ mang kiểu nguyên như i nếu ko ép kiểu đúng ko ạ
đúng rồi. nếu bạn muốn ép kiểu thì 1.0/i hặc 1/(float)i đều được