>>case 9: for(i[9]=0; n>=9 && i[9]<2; ++i[9])
>ここは 9 以上の時しか来ないため、
> case 9: for(i[9]=0; i[9]<2; ++i[9])
>でよい。
>その他も同じ。

この場合、9 の時はそれでいいかもしれませんが。
コンパイラは意図したコードを吐きません。で、悩んでたんです。

77 読んだら分かるでしょうか?
それではダメなんですよ。実際は 0〜1 ではないんで。