Lỗi hàm tính giai thừa

Xem giùm e bị sai ở chỗ nào với ạ!

#include <stdio.h>

void giaithua(int n);
int main()
{
    printf("%d\n",giaithua(6));
    return 0;
}

int giaithua(int n)
{
    int ketqua=1;
    for(int i=1;i<=n;++i)
        ketqua=ketqua*i;
    return ketqua;
}

3 Likes

c:/program files/codeblocks/mingw/bin/…/lib/gcc/mingw32/4.7.1/…/…/…/libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16’

tài liệu tham khảo chưa được định nghĩa là sao a?

Hi Tuấn, tại sao em không tạo topic riêng để hỏi, câu hỏi của em có liên quan gì tới bài 33 - truyền tham trị không?

Em đọc bài này để biết cách tự học lập trình thông qua đặt câu hỏi nhé

Edit: đã move sang topic mới.

1 Like

Bài này a viết hàm về cơ số mũ! còn e thì viết về giai thừa. nó đơn giản hơn của a, mà hàm của a thì chạy mà hàm này lại báo lỗi! Đây cũng có thể nói là 1 bài tập dựa trên cái hàm của a, y chang cấu trúc hàm chỉ là khác về mục đích thôi a! Thiết nghĩ câu hỏi là phù hợp ạ. trong câu hỏi này ý của e là e không thấy sai trong vấn đề cách giải hay là cú pháp hàm e sai. NHưng nó lại báo lỗi ko chạy đc. :frowning: e đã đọc hết nội quy của a rồi ! ( markdown,trust lv,phương pháp đặt câu hỏi khôn ) tiếc là cái này e chịu thua! e chỉ áp dụng nguyên xi hàm của a vào bài này! a giúp e với! cảm ơn a

Sửa lại thành

int giaithua(int n);

Em sai vì prototype phải giống với hàm em viết ở dưới

1 Like

kinh nghiệm học được là quên mất! thử kiểu void vs int và quên đặt lại :frowning: nhanh quá đoảng! cảm ơn a!

1 Like

++i hay i++ ???

Trong vòng lặp for ở trường hợp này thì ++i hay i++ đều giống nhau @tuancoi2506 à.

1 Like

bít thêm 1 cái, trước giờ e chưa thấy nên hơi thắc mắc. hi. thanks a @ltd

1 Like

Vòng lặp for luôn có cú pháp:

for(biểu thức 1;biểu thức 2; biểu thức 3)
                 statement

Trong đó biểu thức 1 và 3 thường là các biểu thức số học nhưng biểu thức 2 là biểu thức điều kiện.
Khi bắt đầu:
_Thực hiện biểu thức 1 trước tiên. (1)
_Sau đó kiểm tra biểu thức 2.Nếu biểu thức 2 cho kết quả là 1 giá trị khác không (true) thì nó sẽ thực hiện các lệnh có trong phần thân của vòng lặp for,ngược lại nếu kết quả là 0 (false) thì sẽ thoát ra khỏi vòng lặp.(2)
_Cuối cùng thực hiện biểu thức 3 rồi quay lại bước (2).
Vì thế trong trường hợp trên, dùng i++ hay ++i đều như nhau cả.

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