利用函数Swap(),分别按如下函数原型编程计算并输出n*n阶矩阵的转置矩阵

2025-04-13 15:50:00
推荐回答(2个)
回答(1):

#include #define N 10void Swap(int *x, int *y);void Transpose(int (*a)[N], int n);void InputMatrix(int (*a)[N], int n);void PrintMatrix(int (*a)[N], int n);int main(){ int s[N][N], n; printf("Input n:"); scanf("%d", &n); InputMatrix(s, n); Transpose(s, n); printf("The transposed matrix is:\n"); PrintMatrix(s, n); return 0;} /* 函数功能:交换两个整型数的值 */void Swap(int *x, int *y){ int temp; temp = *x; *x = *y; *y = temp;} /* 函数功能:计算n*n矩阵的转置矩阵 */void Transpose(int (*a)[N], int n){ int i, j; for (i = 0; i < n; i++) { for (j = i; j < n; j++) { Swap(*(a + i) + j, *(a + j) + i); } }} /* 函数功能:输入n*n矩阵的值 */void InputMatrix(int (*a)[N], int n){ int i, j; printf("Input %d*%d matrix:\n", n, n); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { scanf("%d", *(a + i) + j); } }} /* 函数功能:输出n*n矩阵的值 */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"); }}

回答(2):

用其中一个函数原型,其他的可以按照这个算法举一反三:

#include 
#include
#include

void Transpose(int a[][10],int n);

main()
{
int n;  //储存矩阵的大小
int i,j;  
int a[10][10]={0};  //定义一个最大范围的数组储存矩阵

printf("Input n:");
scanf("%d",&n);
//用户按顺序输入一个矩阵
printf("Input %d*%d matrix:\n",n,n);
for(i=0;i {
for(j=0;j scanf(" %d",&a[i][j]);
}

Transpose(a,n);
//按顺序输出一个矩阵
printf("The transposed matrix is:\n");
for(i=0;i {
for(j=0;j printf("%4d",a[i][j]);
printf("\n");
}

system("pause");
}

//函数功能:实现矩阵转置
void Transpose(int a[][10],int n)
{
int i,j;
int t;
for(i=0;i {
for(j=i+1;j {
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
}