(矩阵的转置)编写两个函数fun和display,功能分别是完成矩阵的转置和输出矩阵;在主函数中完成从键盘上输入矩阵行数和列数,用随机函数产生矩阵的元素(取值范围为[0- 100)的整数),存放于二维数组a中并调用
dispaly输出a,接着调用fum函数阵b。
以下是用指针方式完成矩阵转置的 C 语言代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_ROW 10
#define MAX_COL 10
// 矩阵转置函数
void fun(int *a, int *b, int row, int col) {
int i, j;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
*(b + j * row + i) = *(a + i * col + j);
}
}
}
// 输出矩阵函数
void display(int *a, int row, int col) {
int i, j;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(a + i * col + j));
}
printf("\n");
}
}
int main() {
int a[MAX_ROW][MAX_COL], b[MAX_ROW][MAX_COL];
int row, col, i, j;
srand(time(NULL)); // 初始化随机数生成器
printf("请输入矩阵的行数和列数:");
scanf("%d%d", &row, &col);
// 生成随机矩阵
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
a[i][j] = rand() % 100; // 产生0-99之间的随机数
}
}
printf("原矩阵为:\n");
display(&a[0][0], row, col);
// 转置矩阵
fun(&a[0][0], &b[0][0], row, col);
printf("转置矩阵为:\n");
display(&b[0][0], col, row);
return 0;
}
在这个代码中,我们用 int *a
和 int *b
来表示矩阵,其中 a
表示原矩阵,b
表示转置后的矩阵。在 fun
函数中,我们使用指针的方式来访问矩阵元素,例如 *(a + i * col + j)
表示矩阵中第 i
行第 j
列的元素。在 display
函数中,我们同样使用指针的方式来访问矩阵元素。在主函数中,我们使用二维数组 a
和 b
来存储矩阵元素,然后将它们的首地址传递给 fun
函数和 display
函数。