Taka drobna uwaga, ale ważna uwaga (liczyłem na to że znajdzie się ktoś inny który to lepiej ujmie, ale najwyraźniej nie)...
scanf("%s", cokolwiek);
Nigdy tak nie rób. W twoim przypadku, jeśli użytkownik poda słowo dłuższe niż 50 znaków, program 'wyrzuci' błąd (albo nie, zależy od fazy księżyca i pory dnia - tzn. może się wywalić, ale jeśli będziesz miał pecha to będzie czasami działał).
Dlaczego?
char slowo[50];
scanf("%s", slowo);
Słowo to tablica na 50 elementów - a to co wpisze użytkownik idzie do tej tablicy. Jeśli użyszkodnik wpisze coś dłuższego niż 50 znaków, trafi do do obszaru pamięci następującego po tablicy. Mogą się tam znajdować jakieś tajne dane umieszczone przez kompilator dla poprawnego działania programu (np. adres powrotu funkcji), inne zmienne lokalne, itd, itd. Jeśli będziesz miał szczęście, może się tam nic nie znajdować i program będzie przez pewien czas działać poprawnie.
To samo dotyczy swoją drogą funkcji gets (również potrafi zamazać pamięć)
Co gorsze, w twoim przypadku raczej nie ma się co tego spodziewać, ale gdybyś 'słowo' na przykład pobierał z internetu, sprytny 'hacker' mógłby podać takie 'słowo', żeby wykonać na twoim komputerze dowolny kod...
Można to prawidłowo rozwiązać na wiele sposobów, ale najprościej chyba dodać dwa znaki:
scanf("%49s", slowo);
Oznacza to że zostanie wczytane maksymalnie 49 znaków z klawiatury (dlaczego 49? Ponieważ ostatni wczytany znak w napisie (c-stringu) to zawsze '\0' (bajt zerowy) którego się tu nie wlicza.Tak czy inaczej trzeba zapamiętać że tablica musi być o 1 większa niż format).