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

c

(Thảo Nguyễn Thu) #1

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;
}

(Vuio) #2

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.


(SITUVN.gcd) #3

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


(Trí Thức Nguyễn) #4

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


(Thảo Nguyễn Thu) #5

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 ạ?


(Thảo Nguyễn Thu) #6

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


(Thảo Nguyễn Thu) #7

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


(rogp10) #8

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


(Trí Thức Nguyễn) #9

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é


(Nguyễn Phúc Hoàng) #10

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


(Văn Dương) #11

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


(rogp10) #12

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


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