mmm una idea potrebbe essere quella di mettere tutte le 40 carte in un array di struct (una struttura composta da quelle che a te sono m e n)
Poi metti un contatore inizializzato a 40
Ogni volta fai un rand in un range che va da 0 al contatore-1. L'indice che esce è la carta sorteggiata.
Prendi quella carta e la scambi con l'elemento nell'array in posizione contatore-1 e decrementi il contatore.
Ripeti ciò fino a che non finisce il gioco.
ciao ciao