>>558
>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])

でよい。
その他も同じ。
また、「i[n]」は 0 〜 1 の間でしか値が変化しない。
よって

for( n=0; n<=9; n++ )
{
  for( i[n]=0; i[n]<2; i[n]++ )
  {
    /* i[0〜n]を使った処理 */
  }
}

で良いと思われるが?