qq_45735316 2019-12-01 17:13 采纳率: 94.1%
浏览 549
已采纳

矩阵转置用指针作为函数参数,为什么输出结果这么奇怪?

#include
#include
#define N 3
#define M 3
/*238-4.编写一个函数(参数用指针)将一个3×3矩阵转置。*/
void matrixtranspose(int (*p)[M],int(*p1)[M])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
((p1+j)+i)=*(*(p+i)+j);
}
}
}
void display(int (*p)[M])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%2d",*(*(p+i)+j));
}
printf("\n");
}
}
int main()
{
int i,j,(*p)[M],a[N][M]={0},(*p1)[M];
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
scanf("%d ",&a[i][j]);
}
}
p=a;
display(p);
p1=a;
matrixtranspose(p,p1);
display(p1);
return 0;
}
图片说明


  • 写回答

2条回答 默认 最新

  • dut小冯 2019-12-01 19:09
    关注

    //p1和p指向同一个指针a 所以转置交换数据时出错 重新定义b数组 p1指向b即可
    int main()
    {
    int i, j, (*p)[M], a[N][M] = { 0 }, b[N][M] = { 0 },(*p1)[M];
    for (i = 0; i<N; i++)
    {
    for (j = 0; j<M; j++)
    {
    scanf_s("%d ", &a[i][j]);
    }
    }
    p = a;
    display(p);
    p1 = b;
    matrixtranspose(p, p1);
    display(p1);
    return 0;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题