Hola, el programa está bien planteado y cumple el objetivo propuesto. Pero puedo plantearte algo que es mejorable: al ver el código he visto una cierta proliferación de variables y me he preguntado si eran realmente necesarias tantas variables (además con unos nombres no demasiado claros).
He tardado unos minutos en replantear el código eliminando las siguientes variables: cero1, uno1 , numCaracter1, cero2, uno2, numCaracter2.
Para prescindir de estas variables simplemente me he apoyado en que el contador de un bucle puede ser utilizado dentro del bucle para obtener valores relacionados con él. Por ejemplo el contador i del bucle va tomando valores 0, 1, 2, 3, ... por tanto no me hace falta una variable para ir llevando la cuenta 0, 1, 2, 3, .... ya que puedo usar el propio contador del bucle.
Además el contador del bucle puede usarse para llevar otras cuentas. Por ejemplo si en el bucle quiero contar 1, 2, 3, 4... puedo usar (i+1) en cada pasada del bucle.
Te animo a que replantees el código eliminando esas variables, de esa forma tendrás un código más limpio y mejor diseñado (y te servirá para tenerlo en cuenta en el código que generes en el futuro).
Saludos