Tính tính giai thừa ra kết quả 0

Em mới học C. Em có code bài tính tích

Nhưng đến khi chạy thì nó luôn hiện kết quả là 0. Em không biết lỗi ở đâu. Mong mọi người giúp e với ạ. Và làm thế nào để tính tích lớn mà k bị tràn số ạ?

#include <stdio.h>
int main()
{
    int n;
    printf("Enter n : ");
    scanf("%d", &n;
    double t;
    printf("T = ");
    for(int i=1; i<n; i++)
    {
        printf("%d * ", i);
        t*=i;
    }
    printf(" %d = %lf", n, t*n);
    return 0;
}

Bạn phải gán t = 1; trước khi cho chạy vòng lặp.
Vì ban đầu t được gán bằng 0 nên 0 nhân cho số nào cũng vẫn là 0.

2 Likes

Đừng quên khởi tạo giá trị ban đầu, nó quan trọng lắm đấy.

2 Likes

Mốt không biết lỗi ở đâu thì cứ printf giá trị ra, hoặc học debug đi bạn :smiley:

1 Like

a, chết. sao lại quên cái đó nhỉ. tks ạ :3… b có biết làm thế nào để tính ra giá trị lớn mà k bị tràn số k ạ?

mình quên mất .-. tks ạ.

tại mới học code nên mình chưa có biết debug ạ. :3

Học kĩ bài mảng nhé :smiley: nhất là phần cấp phát động :<

3 Likes

Bạn có thể xem kích thước của kiểu dữ liệu chọn phù hợp với bài tập bạn đang làm nhé

0! = 1! = 1, bạn thiếu

Kiểm tra i <= Max_double / T để biết khi nào tràn.

Vậy chắc cộng log xong gọi exp() thôi :smiley:

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