主题:求助解答
我遇到的问题是转置一个矩阵,它不是方阵,我们老师要求我们用动态数组解,行列数自行输入,可我编的程序无法运行,请大家帮忙看一看!谢谢了!!
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int m=0;
int n=0;
int i=0;
int j=0;
int term=0;
int *p=NULL;
int *q=NULL;
scanf("%d %d",&m,&n);
p=(int *)calloc(m*n,sizeof(int));
q=(int *)calloc(n*m,sizeof(int));
if((p==NULL)||(q==NULL))
{
exit(0);
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&p[i*n+j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
q[j*n+i]=p[i*m+j]; /*这一句系统说——该内存不能为written,这是什么意思啊?*/
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",q[i*m+j]);
}
printf("\n");
}
free(p);
free(q);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int m=0;
int n=0;
int i=0;
int j=0;
int term=0;
int *p=NULL;
int *q=NULL;
scanf("%d %d",&m,&n);
p=(int *)calloc(m*n,sizeof(int));
q=(int *)calloc(n*m,sizeof(int));
if((p==NULL)||(q==NULL))
{
exit(0);
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&p[i*n+j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
q[j*n+i]=p[i*m+j]; /*这一句系统说——该内存不能为written,这是什么意思啊?*/
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",q[i*m+j]);
}
printf("\n");
}
free(p);
free(q);
return 0;
}