方法有很多:
1、可以直接找到数组对应行的元素,进行交换数据,改变原数组内容。
2、可以定义指针数组指向每行的首地址,交换指针地址,按顺序打印每个指针为首的行数据,得到数据交换效果,原数组内容不变。
我这里用第2种方法给你写了一个,你参考吧。
#include <stdio.h>
int main ()
{
int nArry[4][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7}};
int *p[4],i,j,*psave,index[2];//p[]分别指向每行首地址
printf("打印原数组:");
i=16; p[0]=&nArry[0][0];
while(i-->0)
{
if((i+1)%4==0)
printf("\n");
printf("%d ",*(p[0]));
p[0]++;
}
while(1)
{
printf("\n\n输入2个你要交换的行号:");
scanf("%d%d",&index[0],&index[1]);
for(i=0;i<4;i++)
{
p[i]=&nArry[i][0];
}
psave=p[index[0]-1];
p[index[0]-1]=p[index[1]-1];
p[index[1]-1]=psave;
printf("第%d行和第%d行调换后的数组为:\n",index[0],index[1]);
for(i=0;i<4;i++) //按顺序打印 首地址指针开头的行数字
{
for(j=0;j<4;j++)
{
printf("%d ",*(p[i]+j));
}
printf("\n");
}
}
return 0;
}