RE:Matriz en forma de espiral
¿Que se llene en forma de espiral? ¿Muestras los datos en cada paso del llenado para que se note?
Supondré que sí. En principio, para moverte deberías tener incrementos en X y en Y, porque vas cambiando de dirección:
Inicialmente, el incremento de Y sería 1, para que baje (y el de X sería 0); cuando llegues a la fila inferior, incrX = 1 e incrY = 0 para avanzar a la derecha, luego incrY = -1 e incrX = 0, para que suba y así.
Con eso dibujas el "cuadrado exterior".
Para que sea una espiral, debe irse "cerrando", de modo que además necesitarías memorizar el valor Xmaximo, Xminimo, Ymaximo e Yminimo, que actualizas cada vez que cambias de dirección (es decir: inicialmente Xminimo = 0; en cuanto haces el primer cambio de dirección Xminimo = 1 (ya has llenado la primera columna), en el segundo cambio de dirección, Ymaximo para de ser n a ser n-1 (has llenado la última fila) y así sucesivamente.
Lo de sumar las diagonales es trivial ;-)