初学者在这里,我想用 C 语言编写一个程序,用该行的值初始化 8 x 10 矩阵 A[8][10] 的每一行(第一行包含全 0,第二行包含全 1 等)
打印此矩阵后,我想转置它,制作第二个矩阵 B[10][8]
我正在尝试使用嵌套的 for 循环,但我似乎无法接近答案。
如果您想在自己的代码中执行此操作,这里有一个示例:
#include<stdio.h>
#define ROWS 8
#define COLS 10
int main(int argc, char *argv[])
{
int A[ROWS][COLS];
int B[COLS][ROWS];
int i,j;
/*populate*/
for (i=0; i<ROWS; i++)
{
for (j=0; j<COLS; j++)
{
A[i][j] = 2*i + j;
}
}
/*display*/
printf("=== Original matrix === \n");
for (i=0; i<ROWS; i++)
{
for (j=0; j<COLS; j++)
{
printf("%3d ", A[i][j]);
}
printf("\n");
}
/*transpose*/
for (i=0; i<ROWS; i++)
{
for (j=0; j<COLS; j++)
{
B[j][i] = A[i][j];
}
}
/*display*/
printf("\n\n=== Transposed matrix === \n");
for (i=0; i<COLS; i++)
{
for (j=0; j<ROWS; j++)
{
printf("%3d ", B[i][j]);
}
printf("\n");
}
return 0;
}
输出:
=== 原始矩阵 ===
0 1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10 11
4 5 6 7 8 9 10 11 12 13
6 7 8 9 10 11 12 13 14 15
8 9 10 11 12 13 14 15 16 17
10 11 12 13 14 15 16 17 18 19
12 13 14 15 16 17 18 19 20 21
14 15 16 17 18 19 20 21 22 23
=== 转置矩阵 ===
0 2 4 6 8 10 12 14
1 3 5 7 9 11 13 15
2 4 6 8 10 12 14 16
3 5 7 9 11 13 15 17
4 6 8 10 12 14 16 18
5 7 9 11 13 15 17 19
6 8 10 12 14 16 18 20
7 9 11 13 15 17 19 21
8 10 12 14 16 18 20 22
9 11 13 15 17 19 21 23
GSL - GNU 科学图书馆可能会有所帮助。
http://www.gnu.org/software/gsl/
他们在这里有一个类似的例子http://www.gnu.org/software/gsl/manual/html_node/Example-programs-for-matrices.html#Example-programs-for-matrices