求助:原题目是用指针实现矩阵的转置,现在我不知道自己错在哪里了。。。拜托大家帮我看一下
  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; }

1个回答

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; 

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐