按如下函数原型编程计算并输出n×n阶矩阵的转置矩阵。其中,n由用户从键盘输入。已知n值不超过10。 void Transpose(int *a, int n); void Swap(int *x, int *y); void InputMatrix(int *a, int n); void PrintMatrix(int *a, int n); 输入提示信息:"Input n:" 输入格式:"%d" 输入提示信息:"Input %d*%d matrix:\n" 输出提示信息:"The transposed matrix is:\n" 输出格式:"%d\t"
时间: 2024-01-21 13:18:49 浏览: 88
以下是代码实现:
```c
#include <stdio.h>
void Transpose(int *a, int n);
void Swap(int *x, int *y);
void InputMatrix(int *a, int n);
void PrintMatrix(int *a, int n);
int main()
{
int n;
printf("Input n: ");
scanf("%d", &n);
int a[n][n];
InputMatrix(&a[0][0], n);
printf("The transposed matrix is:\n");
Transpose(&a[0][0], n);
PrintMatrix(&a[0][0], n);
return 0;
}
void Transpose(int *a, int n)
{
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
Swap(&a[i * n + j], &a[j * n + i]);
}
}
}
void Swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void InputMatrix(int *a, int n)
{
printf("Input %d*%d matrix:\n", n, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i * n + j]);
}
}
}
void PrintMatrix(int *a, int n)
{
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d\t", a[i * n + j]);
}
printf("\n");
}
}
```
代码中,我们使用了一个二维数组 `a` 来存储输入的矩阵,并将其转为一维数组来进行处理。在 `Transpose` 函数中,我们通过两层循环遍历矩阵的上三角部分,将其与下三角部分对应的元素进行交换,从而得到转置矩阵。在 `PrintMatrix` 函数中,我们按照题目要求以指定的格式输出矩阵。
阅读全文