30/09/2018, 16:07

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
",giaithua(6));
    return 0;
}

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

Tuấn Nguyễn viết 18:21 ngày 30/09/2018

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?

Nguyễn Minh Dũng viết 18:11 ngày 30/09/2018

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é

Le Tran Dat – 13 Nov 14

Người mới học lập trình cần biết – Phần 1 – Học lập trình thông qua hỏi đáp

Là một lập trình viên chuyên nghiệp Đạt tích lũy được kinh nghiệm lập trình thông qua nhiều năm tự học và làm việc. Quá trình tự học đó kéo dài, nhưng chung quy lại việc học lập trình bao gồm các q…

Edit: đã move sang topic mới.

Tuấn Nguyễn viết 18:17 ngày 30/09/2018

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. 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

Nguyễn Minh Dũng viết 18:23 ngày 30/09/2018

void giaithua(int n);

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

Source Code: #include <stdio.h> // declare int power(int coso, int somu); // function prototype int main() { int i; printf("i\t 2^i\t -3^i\n"); for (i = 0; i < 10; ++i) printf("%d\t %d\t %d\n", i, power(2,i), power(-3,i)); getchar(); return 0; } /* power: tra ve ketqua = co so ^ so mu */ /* ketqua = a^b */ // definition int power(int coso, int somu) { int i, ketqua; ketqua = 1; for (i = 1; i <= somu; ++i) ketqua = ketqua * coso; return ket…
Tuấn Nguyễn viết 18:07 ngày 30/09/2018

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

Phạm Hoàng Tuấn viết 18:13 ngày 30/09/2018

++i hay i++ ???

Nguyễn Minh Dũng viết 18:17 ngày 30/09/2018

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

Phạm Hoàng Tuấn viết 18:19 ngày 30/09/2018

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

BaoLe viết 18:11 ngày 30/09/2018

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ả.

Bài liên quan
0