设计一个函数,输入为n*n的矩阵,要求输出矩阵的转置,矩阵数值使 用 scanf 输入。
时间: 2024-06-08 13:08:20 浏览: 69
以下是一个实现矩阵转置的函数:
```c
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;
}
}
}
```
这个函数接受两个参数:矩阵的大小 `n` 和矩阵本身 `matrix`。这里使用了可变长数组,因此需要使用 `n` 来表示数组的大小。函数通过循环遍历矩阵,并交换每个元素的行和列索引来实现转置。
下面是一个完整的示例程序,它接受用户输入的矩阵并打印出其转置:
```c
#include <stdio.h>
void transpose(int n, int matrix[][n]);
int main() {
int n;
printf("Enter the size of the matrix: ");
scanf("%d", &n);
int matrix[n][n];
printf("Enter the matrix:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
printf("Original matrix:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
transpose(n, matrix);
printf("Transposed matrix:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
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;
}
}
}
```