Błąd w main wywołującym silnię

0

Program działa do momentu kiedy wczytuje liczbę, po wpisaniu liczby program zamyka się. Gdzie jest błąd?

#include <stdio.h>
#include <stdlib.h>

int silnia (int liczba)
{
    int sil;
    if (liczba<0) return 0;
    if (liczba==0 || liczba==1) return 1;
    sil = liczba*silnia(liczba-1);
    return sil;
}

int main()
{
int liczba;

printf("Podaj liczbe do obliczenia silni\n");
scanf("%d",liczba);
silnia(liczba);
} 
0

scanf("%d",&liczba);

oraz brak:
return 0;

0

Działa, ale chyba w ostatnim printf mam błąd bo wynik bierze się z kosmosu

 #include <stdio.h>
#include <stdlib.h>

int silnia (int liczba)
{
    int sil;
    if (liczba<0) return 0;
    if (liczba==0 || liczba==1) return 1;
    sil = liczba*silnia(liczba-1);
    return sil;
}

int main()
{
int liczba;
int sil;

printf("Podaj liczbe do obliczenia silni\n");
scanf("%d",&liczba);
silnia(liczba);
printf("Wynik, to %d",sil);
return 0;
}
0

w main daj:

sil = silnia(liczba);

zamiast

silnia(liczba);

0

Dzięki wielkie, działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0