zykklovec 2016-12-28 10:02 采纳率: 0%
浏览 780

简单的矩阵转置,不知道为什么运行到scanf输入数据就出错,请问为什么?

#include
void MatrixAllocate(int x,int y,int p)
{
int i;
p=new int*[x]; //这里动态分配一维指针的内存空间,并把这一组一维指针的首地址赋给二维指针p
if(p==NULL)printf("error1\n");
for(i=0;i<x;i++)
{
p[i]=new int[y]; //再利用new分配一个一维数组,并且把其首地址赋给这一组一维指针
if(p[i]==NULL)printf("error2\n");
}
}
void input(int x,int y,int
p,int**pb1)
{
int i,j;
pb1=p;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
printf("ok\n");
scanf("%d",&p[i][j]); //不知道为什么运行到这就出错
}
}
}
void MatrixTranspose(int x,int y,int**p1,int**p2,int**pb2,void(*p3)(int,int,int**))
{
int i,j;
(*p3)(y,x,p2);
pb2=p2;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
p2[j][i]=p1[i][j];
}
}
}
void MatrixPrint(int x,int y,int**p)
{
int i,j;
for(i=0;i<y;i++)
{
for(j=0;j<x;j++)
{
printf("%d",&p[i][j]);
}
printf("\n");
}
}
void ReleaseMatrix(int x,int y,int**p1,int**p2)
{
int i;
for(i=0;i<x;i++)
{
delete[]p1[i];
}
delete[]p1;
for(i=0;i<y;i++)
{
delete[]p2[i];
}
delete[]p2;
}
int main()
{
int m,n,**pMatrix,**pMatrix1,**pcp1,**pcp2;
void(*pMA)(int,int,int**)=MatrixAllocate;
puts("请指定矩阵行列数:");
printf("行数 m=");
scanf("%d",&m);
printf("列数 n=");
scanf("%d",&n);
puts("创建矩阵空间");
MatrixAllocate(m,n,pMatrix);
puts("给矩阵录入数据");
input(m,n,pMatrix,pcp1);
puts("开始矩阵转置操作");
MatrixTranspose(m,n,pMatrix,pMatrix1,pcp2,MatrixAllocate);
puts("输出转置后的矩阵");
MatrixPrint(m,n,pMatrix1);
puts("释放矩阵空间,并结束应用程序");
ReleaseMatrix(m,n,pcp1,pcp2);
return 0;
}

  • 写回答

2条回答 默认 最新

  • 艾尔森 2016-12-28 10:16
    关注

    p明明是int型的…p=new int*[x];这句编译不过的吧

    还有csdn是可以插入代码片的 就那个</>的符号 直接复制会失去格式和一些内容的

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作