求助:原题目是用指针实现矩阵的转置,现在我不知道自己错在哪里了。。。拜托大家帮我看一下

  1. #include
  2. #include 3.#include 4.void main (void) 5.{ int a[4][4], (*p)[4]; int i=0, j=0,t; for(i=0; i<4; i++) { for(j=0; j<4; j++) { scanf("%d",&a[i][j]); if(j == 3) { printf("\n"); } } } //输入矩阵 for(i=0,j=0,p=a; i<4; i++,j++) { t = ((p+i)+j); ((p+i)+j) = ((p+j)+i); ((p+j)+i) = t; } //转置矩阵 for(i=0; i<4; i++) { for(j=0; j<4; j++) { printf("%5d",a[i][j]); if(j == 3) { printf("\n"); } } } //输出矩阵 system("pause"); return 0; }

int main (void)
{
int a[4][4], b[4][4];
int i=0, j=0;

for (i=0; i<4; i++)
{
    for (j=0; j<4; j++)
    {
        scanf("%d",&a[i][j]);
        if (j == 3)
        {
            printf("\n");
        }
    }
} //输入矩阵
for (i=0; i<4; i++)
{
    for(j=0; j<4; j++)
    {
        b[j][i] = a[i][j];
    }

} //转置矩阵
for (i=0; i<4; i++)
{
    for (j=0; j<4; j++)
    {
        printf("%5d",b[i][j]);
        if (j == 3)
        {
            printf("\n");
        }
    }
} //输出矩阵 
system("pause"); 
return 0; 

}

或者

int main (void)
{
int a[4][4], *p;
int i=0, j=0, t;

for (i=0; i<4; i++)
{
    for (j=0; j<4; j++)
    {
        scanf("%d",&a[i][j]);
        if (j == 3)
        {
            printf("\n");
        }
    }
} //输入矩阵
for (i=0; i<4; i++)
{
    for(j=i+1; j<4; j++)
    {
        p = &(a[i][j]);
        t = *p;
        *p = a[j][i];
        a[j][i] = t;
    }

} //转置矩阵
for (i=0; i<4; i++)
{
    for (j=0; j<4; j++)
    {
        printf("%5d",a[i][j]);
        if (j == 3)
        {
            printf("\n");
        }
    }
} //输出矩阵 
system("pause"); 
return 0; 

}


#include<stdio.h>
int main()
{
    int arr[100][100],n,i,j,t;
    int (*p)[100];
    p=arr;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            t=*(*(p+i)+j);
            *(*(p+i)+j)=*(*(p+j)+i);
            *(*(p+j)+i)=t;
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%d ",*(*(arr+i)+j));
        }
        printf("\n");
    }
    return 0;
 }