30/09/2018, 20:07
Nhap 2 số tự nhiên n,m, in ra màn hình giá trị biểu thức:(n!+m!)/(n+m)!
int n,i,T,m,j,K,L,g;
printf("Nhap vao n= ");
scanf("%d",&n);
printf("Nhap vao m= ");
scanf("%d",&m);
T=1;
K=1;
L=1;
for (i=1; i<=n; i++)
{
T = T * i;
}
printf ("T=%d",T);
for (j=1; j<=m; j++)
{
K= K * j;
}
printf("
K=%d",K);
for (g=1; g<=(n+m); g++)
{
L = L * g;
}
printf("
L=%d",L);
float F=(T+K)/L;
printf("
Gia tri bieu thuc la %f ",F);
getch ();
return 0;
}
Mọi người cho em hỏi tại sao giá trị cuối cùng của biểu thức là 0 vậy ạ?
Bài liên quan
Bởi vì
(m! + n!) < (m+n)!
Khim>1 hoặc n>1
do đó kết quả phép chia kiểu int luôn cho kết quả = 0dấu = khi m=n=1
nhung bên trên e ép kiểu float rồi mà!!
Ép kiểu đó là chia xong mới ép
em đã thử lại… ra kq…
Nhưng em vẫn ko hiểu về cái ép kiểu F=1.*(T+K)/L;
Có thể ép theo kiểu (float) nhưng do lười đánh chữ . Cách này đúng bởi vì:
*khi làm việc với số thì nó tự chuyển sang kiểu có kích thước lớn hơn