sustituir un dígito por otro

/*
  	- Pedir un numero de entre 3 y 7 digitos, en caso de que
  	no este en ese rango volver a pedirlo.

  	- Pedir dos valores a y b entre 0 y 9, en caso de que no
  	este en ese rango volver a pedirlo.

  	- Susituir en el numero inicial el digito a por el digito b
  	mostrando por pantalla la suma del valor inicial y el valor final.

  	2325
  	a:2
  	b:1
  	1315

  	2325 + 1315 = 3640
  */
int a = 0;
int b = 0;

  printf("\n\n");
  do{
    printf("Introduce un numero que tenga entre 3 y 7 digitos: ");
    scanf("%d", &n);
  }while(n < 100 || n > 10000000 );

  printf("Okey, tu numero es correcto\n\n");


  do{
    printf("Introduce dos valores a y b entre 0 y 9\n");
    printf("a: ");
    scanf("%d", &a);
    printf("b: ");
    scanf("%d", &b);
  }while(a < 0 || a > 9 || b < 0 || b > 9);
  printf("Okey, tus valores son correctos\n");

  //Susituir en el numero inicial el digito a por el digito b
  int aux = n;
  int digito, potencia = 1, nuevo = 0;

  while(aux > 0){
    digito = aux % 10; //me da el ultimo digito
    if(digito == a){
      digito = b;
    }
    nuevo = nuevo + digito * potencia;
    potencia = potencia * 10;
    aux = aux / 10;
  }

  printf("inicial: %d\n", n);
  printf("final: %d\n", nuevo);
  printf("La suma de ambos es: %d\n", n + nuevo);