RE:Recorrer Matriz Diagonalmente
Los siguientes ciclos deberían funcionar, asumiendo que la matriz es cuadrada, contiene datos de tipo int, tiene MAXX+1 columnas y MAXY+1 filas. Cada diagonal va de "noroeste" a "sudeste" (así entendí que debía ser).
El primer ciclo recorre las diagonales que comienzan en la primera fila y terminan en la última columna. El segundo, las que comienzan en la primera columna y terminan en la última fila.
for(diag=MAXX; diag>=0; diag--) {
for(x=diag, y=0; x<=MAXX; x++, y++) printf("%d ", matriz[y][x]);
printf("\n");
}
for(diag=1; diag<=MAXY; diag++) {
for(x=0, y=diag; y<=MAXY; x++, y++) printf("%d ", matriz[y][x]);
printf("\n");
}