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("\nK=%d",K);

for (g=1; g<=(n+m); g++)
{
    L = L * g;
}
printf("\nL=%d",L);

float F=(T+K)/L;
printf("\n 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 vì (m! + n!) < (m+n)! Khi m>1 hoặc n>1 do đó kết quả phép chia kiểu int luôn cho kết quả = 0
dấu = khi m=n=1 :stuck_out_tongue:

1 Like

nhung bên trên e ép kiểu float rồi mà!!

Ép kiểu đó là chia xong mới ép

    F=1.*(T+K)/L;
    

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; :joy:

Có thể ép theo kiểu (float) nhưng do lười đánh chữ :slight_smile:. 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

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