将一个3X3的矩阵转置,用一个函数实现之,会加分

将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。

谢谢了,会加分的。。

第1个回答  2010-06-26
#include <iostream>
using namespace std;

void func(int a[3][3]); //声明转换函数

int main()
{
int a[3][3];
cout<<"请输入一个三行三列的数组:\n"; //输入一个三行三列的数组
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
cin>>a[i][j];
cout<<"所输入的数组为:\n";
for(i=0;i<3;i++)
cout<<a[i][0]<<" "<<a[i][1]<<" "<<a[i][2]<<endl;
cout<<endl;
func(a); //调用函数
cout<<"矩阵转置后为:\n"; //输出转换后的数组
for(i=0;i<3;i++)
cout<<a[i][0]<<" "<<a[i][1]<<" "<<a[i][2]<<endl;
cout<<endl;
return 0;
}

void func(int a[3][3]) //定义转换函数,实现转换功能
{
int t;
for(int i=0;i<3;i++)
for(int j=0;j<i;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}

运行结果:
请输入一个三行三列的数组:
1 2 3 4 5 6 7 8 9
所输入的数组为:
1 2 3
4 5 6
7 8 9

矩阵转置后为:
1 4 7
2 5 8
3 6 9

Press any key to continue
第2个回答  推荐于2016-04-19
#include <stdio.h>
#define N 3
int zhuanzhi(int arr[N][N]){
int i,j,a[N][N];
for(i=0;i <N;i++)
for(j=0;j <N;j++)
a[i][j]=arr[j][i];

for(i=0;i <N;i++){
for(j=0;j <N;j++)
printf( "%d\t ",a[i][j]);
printf( "\n ");
}
return 0;
}
int main()
{
int arr[N][N]={1,2,3,4,5,6,7,8,9},i,j;
for(i=0;i <N;i++){
for(j=0;j <N;j++)
printf( "%d\t ",arr[i][j]);
printf( "\n ");
}
printf( "\n\n ");
zhuanzhi(arr);
return 0;
}本回答被提问者采纳
第3个回答  2010-06-26
建议使用MATLAB,这会十分简单
相似回答