C语言设计一个子函数,将任意n×n的矩阵转置,并在主函数中调用此函数将一个4×4的矩阵转置,并在主函数中输出结果。
时间: 2023-09-05 08:04:44 浏览: 248
得一个 3×3 的矩阵转置,用一函数实现之。在主函数中用 scanf 函数输入矩阵元素
### 回答1:
以下是一个将任意n×n的矩阵转置的函数实现,以及在主函数中调用此函数将一个4×4的矩阵转置并输出结果的示例代码。
```c
#include <stdio.h>
void transpose(int n, int matrix[][n]) {
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int matrix[4][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
printf("Original Matrix:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
transpose(4, matrix);
printf("\nTransposed Matrix:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
输出结果为:
```
Original Matrix:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Transposed Matrix:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
```
### 回答2:
下面是用C语言设计的将任意n×n的矩阵转置的子函数。在主函数中,我使用一个4×4的矩阵进行了转置,并输出了转置后的结果。
```c
#include <stdio.h>
void transposeMatrix(int n, int matrix[][n]) {
// 创建一个临时矩阵来存放转置后的结果
int tempMatrix[n][n];
// 将矩阵转置
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
tempMatrix[i][j] = matrix[j][i];
}
}
// 将转置后的结果赋值给原始矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = tempMatrix[i][j];
}
}
}
int main() {
int matrix[4][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
// 调用子函数,将矩阵转置
transposeMatrix(4, matrix);
// 输出转置后的结果
printf("转置后的矩阵:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
运行结果:
转置后的矩阵:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
### 回答3:
可以设计一个如下的C语言子函数来实现矩阵的转置:
```
#include<stdio.h>
void transposeMatrix(int matrix[][4], int n) {
int i, j, temp;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
// 交换矩阵中的元素
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int i, j;
int matrix[4][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
printf("原始矩阵:\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 调用子函数转置矩阵
transposeMatrix(matrix, 4);
printf("转置后矩阵:\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个程序中,子函数 `transposeMatrix` 的参数接收一个 n×n 的矩阵和 n 的大小。它通过两次循环来遍历矩阵并交换元素的位置,实现矩阵的转置。
在主函数中,我们首先定义了一个 4×4 的矩阵,并将其打印出来。然后,我们调用子函数对矩阵进行转置,最后再次打印转置后的矩阵。运行程序后,你会看到原始矩阵和转置后的矩阵都被正确地输出。
阅读全文