>>661
古い書き方

>>660
mainでscanfで%dで読み取れた時点で、それが数値であることは確定しているので、そのjudgeの処理はまったくの無駄
scanfは、読み取れたデータの個数を返すので、scanfの戻り値が1じゃなかった場合は数値を読み取れなかった=数値じゃないものが入力されたと判断できる
再入力させる場合は、さっき読み取れなかったデータは読み捨てる必要があるので、改行まで来るまでgetcを回すとか、scanfで%sして捨てるとかするといいかも