利用指针将三阶矩阵转置

img

img


帮我看一下哪里错了,现在是什么都没有输出,困惑,是要利用指针

修改如下,供参考:

img


代码修改如下,供参考:

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

应该是循环次数太多,等长一点的时间就行

仅供参考,谢谢

img


#include<stdio.h>

int main(void)
{

    int arr[3][3], arr0[3][3], (*p)[3] = arr;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
            scanf("%d", &arr[i][j]);
    }
    puts("");
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
            printf("%d ", *(*(p + j) + i));
        puts("");
    }

    return 0;
}