L'errore è nei doppi for che usi. Ne serve uno solo per volta ... ovvero

codice:
    //copio in c gli elementi di a nelle posizioni pari
    int i=0;
    for (int k = 0; k < w; k+=2, i++){
    c[k] = a[i];
    }
    //copio in c gli elementi di b nelle posizioni pari
    int j=0;
    for (int k = 1; k < w; k+=2, j++){
    c[k] = b[j];
    }