Ti confermo che devi usare i cicli da 0 a n-1 e ti ricordo che l'input da tastiera bufferizzato considera anche il tasto "Invio" che pressi per accettare i dati. Per evitare questo problema, devi pulire il buffer dopo ogni input.

codice:
scanf("%d",&n);
while(!getchar());


M[i][k] = getchar();
while(!getchar());
Infine, considera che l'allocazione di un array così come hai fatto è caratteristico dello standard C99 che non è usato da tanti compilatori (probabilmente tu utilizzi DevCpp con mingw ...). Sarebbe meglio utilizzare l'allocazione dinamica dell'array e un puntatore opportuno.