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; }