求大神解答一道简单的c语言编程问题。 题目:编一函数实现一个n*n的矩阵转置。在程序的主函数中用s

求大神解答一道简单的c语言编程问题。
题目:编一函数实现一个n*n的矩阵转置。在程序的主函数中用scanf函数输入以下矩阵元素;将数组名作为函数实参;函数调用后在主函数中输出已转置的矩阵。(有附图)

#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;
}
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-30
#include<stdio.h>
#include<string.h>
#define N 4
int convertmatrix(int m[N][N])
{
int i,j,temp;
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
temp=m[i][j];
m[i][j]=m[j][i];
m[j][i]=temp;
}
}
return 0;
}
int main()
{
int matrix[N][N];
int i,j;
printf("请输入一个%d*%d的矩阵:\n",N,N);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&matrix[i][j]);
}
}
convertmatrix(matrix);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%-3d",matrix[i][j]);
}
printf("\n");
}
return 0;
}

本回答被提问者采纳
第2个回答  2014-12-11

追问

把你编的复制下来给我发过来吧,大神

追答

#include
#define n 4
void transpose(int a[n][n],int b[n][n]);
int main()
{
int a[n][n],b[n][n],i,j;
printf("请输入一个4×4的矩阵:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("\n转置后的矩阵为:\n");
transpose(a,b);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",b[i][j]);
putchar(10);
}
return 0;
}

void transpose(int a[n][n],int b[n][n])
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[i][j]=a[j][i];
}

相似回答