Sì infatti hai ragione. Non avevo fatto caso neppure a questo...

quindi il codice corretto è questo
codice:
flag=0;
for(i=0; i<=(N*N)-1; i++) {
     for(j=i+1; j<=(N*N)-1; j++) {
          if(ar[i]==ar[j])
              flag=1;
     }
}

if(flag==1)
   printf("\nCi sono elementi ripetuti!\n");
else
   printf("\nNon ci sono elementi ripetuti!\n");
Non ho usato il break perché all'uni ci hanno consigliato di evitarlo a meno che non sia strettamente necessario. In realtà non so se ce l'hanno detto a scopo didattico o per altri motivi..secondo te perché? L'istruzione break ha aspetti negativi?