Un primo errore evidente che ho visto:

codice:
if(i==0){
   ...
else{
   if(j==0){
      while(m1[i][j]<m1[i-1][j+C]){  //controlla il valore inserito con quello precedente
      ...
   }
}

j è uguale a 0, quindi scrivere "j + C" è inutile... tanto vale scrivere direttamente "C":


codice:
// Questo è equivalente: ho sostituito "j+C" con "C"
while(m1[i][j]<m1[i-1][C]){

Dato che gli array vanno da 0 a C-1, stai sforando i limiti.


Ciao.