sigo sin entenderlo...
Lo que hago es crear una nueva matriz con el intercambio de las filas, así no pierdo la matriz inicial. Eso es porque presupongo que se va a "hacer" otras cosas con la matriz inicial, como cambiar diagonales, obtener la simétrica sumar o restar, etc. Por ejemplo:
#include <stdio.h>
#define TAM 4
#include <time.h>
int i,j;
int main()
{
int fila1,fila2,temp1,temp2,a[TAM][TAM],b[TAM][TAM],c[TAM][TAM],d[TAM][TAM],e[TAM][TAM];
srand(time(0));
generar_matriz (a);
imprimir (a);
/********** cambio fila primera ultima **********/
copia_matriz (a,b);
puts ("cambio fila primera ultima\n");
for (j=0;j<TAM;j++)
{
temp1=b[0][j];
temp2=b[TAM-1][j];
b[TAM-1][j]= temp1;
b[0][j]= temp2;
}
imprimir (b);
/**************** cambio filas ***************/
copia_matriz (a,e);
puts ("cambio filas\n");
printf ("Numero de fila1: ");
scanf ("%d",&fila1);
printf ("Numero de fila2: ");
scanf ("%d",&fila2);
puts ("\n");
for (j=0;j<TAM;j++)
{
temp1=e[fila1-1][j];
temp2=e[fila2-1][j];
e[fila2-1][j]= temp1;
e[fila1-1][j]= temp2;
}
imprimir (e);
/************* cambio diagonales *****************/
copia_matriz (a,c);
puts ("cambio diagonales\n");
for (i=0;i<TAM;i++)
{
temp1=c[i][i];
temp2=c[i][TAM-1-i];
c[i][TAM-1-i]= temp1;
c[i][i]= temp2;
}
imprimir (c);
/************* matriz simetrica *****************/
copia_matriz (a,d);
puts ("matriz simetrica\n");
for (i=0;i<TAM;i++)
for (j=0;j<TAM && j<i;j++)
{
temp1=d[i][j];
temp2=d[j][i];
d[j][i]= temp1;
d[i][j]= temp2;
}
imprimir (d);
return 0;
}
/**************************************************/
int generar_matriz (int a[][TAM])
{
for (i=0;i<TAM;i++)
{
for (j=0;j<TAM;j++)
{
/* printf("a[%d][%d]= ",i,j);
scanf("%d",&a[i][j]);*/
a[i][j]=rand() % 10 ;
}
}
}
/**************************************************/
int imprimir (int a[][TAM])
{
int i,j;
for (i=0;i<TAM;i++)
{
for (j=0;j<TAM;j++)
{
printf("%d ",a[i][j]);
}puts("\n");
}puts("\n");
}
/**************************************************/
int copia_matriz (int matriz1[][TAM],int matriz2[][TAM])
{
int i,j;
for (i=0;i<TAM;i++)
{
for (j=0;j<TAM;j++)
{
matriz2[i][j]=matriz1[i][j];
}
}
}
/**************************************************/
Si sólo quieres cambiar las filas y punto el código de cypascal te vale.
Saludos!.