No non hai risolto il problema , ma avresti tutte le informazione per risolverlo .

1) dal quel poco che conosco sul linguaggio c , non puoi copiare una stringa
con un semplice = citta[i]= citta[j]; , ma devi usare la funzione strcpy()

2) tu hai dichiarato le variabili contatore i e j globalmente , funzione ma non è necessario
potrebbero essere locali e passate come parametro a una funzione

3) la prima riga della matrice temp non contiene le temperature della prima riga
della matrice citta

4) non devi copiare una temperatura ma 4

una possibile soluzione


codice:


void scambio(char citta[][15],int temperatura[][4],int i ,int j){

  /* visto che nella prima riga della matrice temp non ci sono le 
     temperature ma gli orari , le temperature saranno in  i+1 e j+1 
     una posizione avanti */

char string[20];
     int temp[4],k=0;
          strcpy(string,citta[i]);//copio il nome citta  i
          for(k=0;k<4;k++)        //copio le temperature i       
              temp[k]=temperatura[i+1][k];
          strcpy( citta[i],citta[j]); 
         for(k=0;k<4;k++)
                temperatura[i+1][k]=temperatura[j+1][k];
          strcpy(citta[j], string);
         for(k=0;k<4;k++)
               temperatura[j+1][k]=temp[k];

         return;
}
prova e se vuoi fammi sapere se funziona o vi sono errori ,
comunque mi pare di capire che hai qualche lacuna , e dovresti approfondire meglio
array e matrici e forse altro ....