Found e' un 'booleano' che può essere solo VERO o FALSO. 
Se uguale a ZERO è FALSO per altri valori è VERO.
Mi aiuta ad uscire dalle condizioni dei cicli for.
Un'altra soluzione al problema potrebbe essere:
 // --- cut ---
  int k;
  for(k=0;r<40 ;k++)
  {
    r=(k/10)+1;
    c=(k%10)+1;
    {
      if(n==mat[r][c])
      {
        mat[r][c]=0;
        break;
      }
    }
  }
 //   --- cut ---
Ed ancora usando i puntatori...  Tipo:
  //   --- cut ---
  int *ptr_ind=&mat[1][0];
  int k;
  for(k=0;k<40 ;k++,ptr_ind++)
  {
      if(n==*ptr_ind)
      {
        *ptr_ind=0;
        break;
      }
  }
  //   --- cut ---
Saluti,
Max