Aca te envio una solución, incluida el algoritmo, espero que alcance en un pantallaso.
/********************************************************************
CUADRADOS MAGICOS ( de orden impar )
ALGORITMO GENERAL
Un modo de construir f cilmente cuadrados m gicos de orden impar.
1. Tomemos una serie aritm‚tica cualquiera, para mayor comodidad la
serie de los n£meros naturales, y coloquemos el n£mero 1 en la
celda central de la fila superior.
2. La cifra consecutiva a una cualquiera debe colocarse en la celda
que le sigue diagonalmente hacia arriba y hacia la derecha.
3. Si al hacer esto se sale del cuadrado por el l¡mite superior del
contorno del mismo, saltaremos a la celda de la columna siguiente
hacia la derecha y en su fila inferior, si se sale por la derecha,
se sigue por la primera celda, a partir de la izquierda, de la fila
superior.
4. Cuando la celda siguiente est ocupada, el n£mero consecutivo de la
serie se coloca en la celda inmediatamente inferior a la del n£mero
precedente, comenzando as¡ un nuevo camino en la direcci¢n de la
diagonal.
*********************************************************************/
//C¢dificaci¢n basada en el algoritmo anterior
#include <stdio.h>
//limitar rango ( limita los valores de x al rango [0, N] )
#define lr( x, N ) ( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )
void main()
{
int cuadrado[17][17],x,y,n,N;
//restricci¢n del orden a los impares entre 3 y