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

其中,n由用户从键盘输入。已知n值不超过10.
void Transpose(int a[][N],int n);
void Transpose(int (*a)[N],int n);
void Transpose(int *a,int n);

#include <stdio.h>#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"); }}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-08

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

#include <stdio.h>
#include<stdlib.h>
#include<math.h>

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<n;i++)
{
for(j=0;j<n;j++)
scanf(" %d",&a[i][j]);
}

Transpose(a,n);
//按顺序输出一个矩阵
printf("The transposed matrix is:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;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<n;i++)
{
for(j=i+1;j<n;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
}

相似回答