Si necesitas todas las variables no podras reducir el tamaño del programa pero si el del codigo, y es lo que planteas como solucion: una lista de variables. Redefino los nombres de variable que has usado en tu ejemplo para que quede mas claro
Código C:
Ver original//redefino 'variable' por 'indice_contenedor'
//redefino 'a' por 'valor'
//redefino 'variable1', 'variable2' etc por una lista de variables llamada 'contenedores' que supongamos que son tipos enteros
int contenedores[5];
int indice_contenedor;
int valor;
//supongamos que quieres rabajar con el contenedor nº 2
indice_contendor = 3;
//y que quieres asignarle el valor 55
valor = 55;
//seleccionas el contenedor segun indice y asignas valor
contenedores[indice_contenedor] = value;
Ten en cuenta que esto requiere un uso determinado: los indices por defecto estan basados en 0 (el primer contenedor esta bajo el indice 0, el segundo bajo el 1, etc), pero puedes cambiarlos solo con 'traducir' la posicion.
Ademas tambien tienes que comprovar dos errores posibles: que el indice no sea menor que 0 y que no sea mayor que la ultima posicion.
Saludos
vosk