Je constate que, à l'exécution, on passe systématiquement deux fois dans la boucle ....
Si on entre autre chose que 'o', on sort immédiatement de la boucle
Si on entre 'o', on refait la boucle (c'est normal) mais on n'attend pas d'interventions de l'utilisateur sur le deuxième scanf() et on sort toujours de la boucle. C'est effectivement à cause du '\n' en attente dans le buffer d'entrée et qui est lu par le deuxième scanf().
Une possibilité, modifier le format du scanf() pour
scanf(" %c", &rep); // avec un blanc devant %
Partager