#include <stdio.h>
void Transpose(int (p)[4]);
void main()
{
int i,j;
int arr[4][4];
int (p)[4]=arr;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
scanf("%d",&arr[i][j]);
}
}
Transpose(arr);
}
void Transpose(int (p)[4])
{
int i,j,t;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
t=((p+i)+j);
((p+i)+j)=((p+j)+i);
((p+j)+i)=t;
printf("%d ",(*(p+i)+j));
}
printf("\n");
}
}
在主函数中继续用双循环输出arr二维数组元素啊
#include <stdio.h>
void Transpose(int (*p)[4]);
void main()
{
int i,j;
int arr[4][4];
int (*p)[4]=arr;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
scanf("%d",&arr[i][j]);
}
}
Transpose(arr);
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%d ",arr[i][j]);
}
printf("\n");
}
}
void Transpose(int (*p)[4])
{
int i,j,t;
for(i=0;i<4;i++){
for(j=0;j<i;j++){
t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=t;
}
}
}