tu non hai allocato un puntatore ad interi in grado di tenere tutta quella roba.
Dovresti fare una roba del genere
codice:
mazzo=malloc(n * 40 * (sizeof(int)));
if (mazzo == NULL) return -1; //non puoi allocare
while (j<n) {
    while (i<40) {
        mazzo[k]=i+1;
        i=i+1;
        k=k+1;
    }
    i=0;
    j=j+1;
   }