Código
#include <stdio.h> #include <stdlib.h> #define MAX_N 9 typedef struct { int max_number; int index; } number; int main(void) { int n = 358267; int array[MAX_N], *array_ptr = array; int aux, tmp; register int i = 0; /* Extraemos cada digito */ while (n != 0 && i < MAX_N) { *array_ptr++ = n % 10; n /= 10; i++; } /* Usamos el ordenamiento burbuja */ for (int aux_i = 0; aux_i < i; aux_i++) { for (int aux_j = 0; aux_j < i-1; aux_j++) { if (array[aux_j] > array[aux_j+1]) { aux = array[aux_j]; array[aux_j] = array[aux_j+1]; array[aux_j+1] = aux; } } } number mynumber; mynumber.index = 0; mynumber.max_number = 0; /* Extraemos el número mayor */ int j; for (j = 0; j < i; j++) if (array[j] > mynumber.max_number) { mynumber.max_number = array[j]; mynumber.index = j; } /* Lo intercambiamos con el último y el número mayor */ tmp = array[--j]; array[j] = mynumber.max_number; array[mynumber.index] = tmp; /* Reconstruimos el número */ int k, r = 0; for (k = 0; k < i; k++) { r *= 10; r += array[k]; } return EXIT_SUCCESS; }
No es recursivo, y tampoco sé si es lo que deseas, pero te puede servir para dar un paso más.
~ DtxdF