scanfは、改行コードを残してしまうので、
fflush(stdin)で改行コードを捨ててしまうべし。
(ソースはほとんど見てないけど)