程序设计C 实验五 题目四 二维动态数组转置(0294)

输入两个数字分别控制行向量个数和列向量个数。动态生成二维矩阵,对矩阵赋值后将其转置输出。

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;
}


猜你喜欢

转载自blog.csdn.net/Aimee_ice/article/details/78284277