1. 程式人生 > >程式設計C 實驗五 題目四 二維動態陣列轉置(0294)

程式設計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;
}