按如下函数原型编程计算并输出n×n阶矩阵的转置矩阵。其中,n由用户从键盘输入。已知n值不超过10。 void Transpose(int (*a)[N], int n); void Swap(int *x, int *y); void InputMatrix(int (*a)[N], int n); void PrintMatrix(int (*a)[N], int n); 输入提示信息:"Input n:" 输入格式:"%d" 输入提示信息:"Input %d*%d matrix:\n" 输出提示信息:"The transposed matrix is:\n" 输出格式:"%d\t"
时间: 2024-01-21 12:19:07 浏览: 123
以下是代码实现:
```c
#include <stdio.h>
#define N 10
void InputMatrix(int (*a)[N], int n);
void Transpose(int (*a)[N], int n);
void PrintMatrix(int (*a)[N], int n);
void Swap(int *x, int *y);
int main() {
int a[N][N], n;
printf("Input n: ");
scanf("%d", &n);
printf("Input %d*%d matrix:\n", n, n);
InputMatrix(a, n);
printf("The transposed matrix is:\n");
Transpose(a, n);
PrintMatrix(a, n);
return 0;
}
void InputMatrix(int (*a)[N], int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
}
void Transpose(int (*a)[N], int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
Swap(&a[i][j], &a[j][i]);
}
}
}
void PrintMatrix(int (*a)[N], int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d\t", a[i][j]);
}
printf("\n");
}
}
void Swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
```
代码思路:
1. 定义了一个 10x10 的 int 类型二维数组 a。
2. 用户从键盘输入 n 的值,表示矩阵的行列数(n * n)。
3. 调用 InputMatrix 函数,让用户输入 n * n 的矩阵元素。
4. 调用 Transpose 函数,对矩阵进行转置操作。
5. 调用 PrintMatrix 函数,输出转置后的矩阵。
在 Transpose 函数中,使用了 Swap 函数,将矩阵中的 a[i][j] 与 a[j][i] 进行交换,从而完成矩阵的转置。
阅读全文