C语言设计一个子函数,将任意n×n的矩阵转置,并在主函数中调用此函数将一个4×4的矩阵转置。
时间: 2023-09-23 20:06:36 浏览: 132
### 回答1:
以下是一个将n×n的矩阵转置的函数:
```c
void transpose(int matrix[][n], int n) {
int temp;
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
```
在这个函数中,我们使用两个嵌套的for循环来交换矩阵中每个元素的位置。在主函数中,我们可以创建一个4×4的矩阵并将其作为参数传递给transpose函数:
```c
#include <stdio.h>
void transpose(int matrix[][4], int n);
int main() {
int matrix[4][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
// 打印原始矩阵
printf("原始矩阵:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 转置矩阵
transpose(matrix, 4);
// 打印转置后的矩阵
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;
}
void transpose(int matrix[][4], int n) {
int temp;
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
```
输出:
```
原始矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后的矩阵:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
```
### 回答2:
实现将任意n×n的矩阵转置的子函数:
```c
#include <stdio.h>
void transposeMatrix(int matrix[][n], 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;
}
}
}
```
在主函数中调用此函数将一个4×4的矩阵转置:
```c
int main() {
int matrix[4][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
int i, j;
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;
}
```
运行结果:
```
原始矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后的矩阵:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
```
以上为利用C语言实现将任意n×n的矩阵转置的子函数,并在主函数中调用此函数将一个4×4的矩阵转置的例子。
### 回答3:
可以通过编写一个名为transpose_matrix的子函数来实现将任意n×n的矩阵转置的功能。下面是一个示例代码:
```c
#include <stdio.h>
void transpose_matrix(int matrix[][4], int n) {
int temp;
for(int i=0; i<n; i++) {
for(int j=i+1; j<n; j++) {
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}
};
transpose_matrix(matrix, 4);
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
```
在主函数中,我们定义了一个4×4的矩阵,并将其作为参数传递给了transpose_matrix函数。在transpose_matrix函数中,我们使用两个嵌套循环来遍历矩阵的对角线以下部分,交换对应位置的元素,从而实现矩阵的转置。最后,在主函数中打印出转置后的矩阵。
阅读全文