要求: 1. 程序中不允许使用数组下标运算符。矩阵的空间使用malloc()分配,详见hint。 对于二维数组,需要先分配一个指针数组,然后再给指针数组中的每个指针分配int数组空间。 2. 分配的空间应当在每组数据处理结束后使用free()释放,应当先释放每一个int数组,然后再释放指针数组。Input输入包含多组数据,处理到输入结束为止(EOF标志)。每组输入首先是两个正整数 M, N (M, N都不大于20)然后是M行,每行N个整数,使用空格分隔。Output输出其转置矩阵,数字间用空格分隔,行末最后一个整数后也输出空格。Sample Input2 31 2 34 5 6Sample Output1 4 2 5 3 6
#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;}