Lösungsvorschlag

int
printf(const char *, ...);

void
initGeMatrix(int m, int n, double *A, int incRowA, int incColA)
{
    int i, j;

    for (i=0; i<m; ++i) {
        for (j=0; j<n; ++j) {
            A[i*incRowA+j*incColA] = i*n + j + 1;
        }
    }
}

void
printGeMatrix(int m, int n, const double *A, int incRowA, int incColA)
{
    int i, j;

    for (i=0; i<m; ++i) {
        for (j=0; j<n; ++j) {
            printf("%10.4lf ", A[i*incRowA+j*incColA]);
        }
        printf("\n");
    }
    printf("\n\n");
}

double A[6*8];

int
main()
{
    initGeMatrix(6, 8, A, 1, 6);

    printf("A =\n");
    printGeMatrix(6, 8, A, 1, 6);

    printf("A^T =\n");
    printGeMatrix(8, 6, A, 6, 1);

    printf("diag(A) =\n");
    printGeMatrix(6, 1, A, 1+6, 6);

    return 0;
}

Übersetzen und ausführen

$shell> gcc -Wall -o initmatrix initmatrix.c
$shell> ./initmatrix
A =
    1.0000     2.0000     3.0000     4.0000     5.0000     6.0000     7.0000     8.0000 
    9.0000    10.0000    11.0000    12.0000    13.0000    14.0000    15.0000    16.0000 
   17.0000    18.0000    19.0000    20.0000    21.0000    22.0000    23.0000    24.0000 
   25.0000    26.0000    27.0000    28.0000    29.0000    30.0000    31.0000    32.0000 
   33.0000    34.0000    35.0000    36.0000    37.0000    38.0000    39.0000    40.0000 
   41.0000    42.0000    43.0000    44.0000    45.0000    46.0000    47.0000    48.0000 


A^T =
    1.0000     9.0000    17.0000    25.0000    33.0000    41.0000 
    2.0000    10.0000    18.0000    26.0000    34.0000    42.0000 
    3.0000    11.0000    19.0000    27.0000    35.0000    43.0000 
    4.0000    12.0000    20.0000    28.0000    36.0000    44.0000 
    5.0000    13.0000    21.0000    29.0000    37.0000    45.0000 
    6.0000    14.0000    22.0000    30.0000    38.0000    46.0000 
    7.0000    15.0000    23.0000    31.0000    39.0000    47.0000 
    8.0000    16.0000    24.0000    32.0000    40.0000    48.0000 


diag(A) =
    1.0000 
   10.0000 
   19.0000 
   28.0000 
   37.0000 
   46.0000 
$shell>