输入两个数字分别控制行向量个数和列向量个数。动态生成二维矩阵,对矩阵赋值后将其转置输出。
Description
输入的第一行为了两个整数m、n,接下来有一个由m*n个数据组成的整数矩阵。
Input
按转置后的矩阵格式输出转置矩阵(n*m)。
Output
1
2
3
4
5
|
3 2
1 2
3 4
5 6
|
Sample Input
1
2
3
|
1 3 5
2 4 6
|
#include <stdio.h>
#include <stdlib.h>
int main() {
int **ptr_a,m,n,i,j; //**ptr_a为二级指针
scanf("%d %d",&m,&n);
ptr_a = (int **)malloc(m * sizeof(int *)); //先动态分配一维数组
if(ptr_a == NULL) return 0;
for(i = 0;i < m;i++) {
ptr_a[i] = (int *)malloc(n * sizeof(int)); //为每一个一维数组再动态分配内存
if(ptr_a == NULL) return 0;
}
for(i = 0;i < m;i++) {
for(j = 0;j < n;j++) {
scanf("%d",&ptr_a[i][j]);
}
}
for(i = 0;i < n;i++) {
for(j = 0;j < m;j++) {
if(j == m - 1) printf("%d\n",ptr_a[j][i]);
else
printf("%d ",ptr_a[j][i]);
}
}
for(i = 0;i < m;i++) {
free(ptr_a[i]);
}
free(ptr_a);
return 0;
}