求C语言高手解答,输入一个矩阵,输出其转置矩阵。

要求:

1. 程序中不允许使用数组下标运算符。矩阵的空间使用malloc()分配,详见hint。

对于二维数组,需要先分配一个指针数组,然后再给指针数组中的每个指针分配int数组空间。

2. 分配的空间应当在每组数据处理结束后使用free()释放,应当先释放每一个int数组,然后再释放指针数组。

Input

输入包含多组数据,处理到输入结束为止(EOF标志)。
每组输入首先是两个正整数 M, N (M, N都不大于20)
然后是M行,每行N个整数,使用空格分隔。

Output

输出其转置矩阵,数字间用空格分隔,行末最后一个整数后也输出空格。

Sample Input

2 3
1 2 3
4 5 6

Sample Output

1 4
2 5
3 6
最新回答
如一

2024-04-18 01:00:04

#include <stdio.h>
#include <malloc.h>
int main()
{
int m,n;
int i,j;
int ** p;
while(1)
{
printf("Input m and n:");
if(scanf("%d%d",&m,&n)==EOF)
break;
p=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++)
{
*(p+i)=(int*)malloc(n*sizeof(int));
for(j=0;j<n;j++)
{
scanf("%d",*(p+i)+j);
}
}
for(j=0;j<n;j++)
{
for(i=0;i<m;i++)
{
printf("%d ",*(*(p+i)+j));
}
printf("\n");

}
}
for(i=0;i<m;i++)
free(*(p+i));
free(p);
return 0;
}