C++ 矩阵的转置

主函数输入二维数组元素,调用子函数(自定义),求转置后的二维数组,返回主函数输出结果。我想做的好看点,输出的矩阵式正方形的。我试着写了写,没通过,其实我自己也觉得不对劲。请问怎么改,为什么
#include<iostream>
using namespace std;
float a[3][3];
int main()
{int i,j;
float change();
cout<<"请输入一个3*3的二维数组:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"转制后的矩阵是:"<<change()<<endl;
return 0;
}
float change()
{int i,j;
{for(i>j||j>i,i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=a[j][i];}
{for(i=0;i<3;i++)
{for(j=0;j<3;j++)
return a[i][j];}
cout<<endl;
}
}

#include<iostream>
#define N 3
using namespace std;

float a[N][N];

void output(float p[N][N])
{
int i, j;
for(i = 0; i < N; i ++)
for(j = 0; j < N;j ++)
{
cout<<p[i][j]<<" ";
if(j == N - 1)
cout<<endl;
}
}

void change(float p[N][N])
{
float t;
int i, j;
for(i > j || j > i, i=0; i < N; i ++)
for(j = i; j < N; j ++)
{
t = p[i][j];
p[i][j] = p[j][i];
p[j][i] = t;
}
}

int main()
{
int i, j;

cout<<"请输入一个"<<N<<"*"<<N<<"的二维数组:"<<endl;
for(i = 0; i < N; i ++)
for(j = 0; j < N; j ++)
{
cout<<"请输入第"<<i + 1<<"行第"<<j + 1<<"列:";
cin>>a[i][j];
}
cout<<"您输入的矩阵是:"<<endl;
output(a);
change(a);
cout<<"转置后的矩阵是:"<<endl;
output(a);

return 0;
}

经测试正常,若要求浮点数矩阵输出格式整齐,只需输出时加上输出格式即可~~
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-28
#include<iostream>
using namespace std;
float a[3][3];
int main()
{int i,j;
void change();
cout<<"请输入一个3*3的二维数组:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
//cout<<"转制后的矩阵是:"<<change()<<endl;//
change();
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
void change()
{int i,j;
float t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)//从i+1开始。执行交换
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
//{for(i=0;i<3;i++)
//{for(j=0;j<3;j++)
// return a[i][j];}//return 只返回一次,后面的语句不执行。
//cout<<endl;
//}
}本回答被提问者采纳
第2个回答  2010-05-20
#include<iostream>
using namespace std;
float a[3][3];
int main()
{int i,j;
void change();
cout<<"请输入一个3*3的二维数组:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
change();//改好了..
return 0;
}
void change()
{int i,j;
cout<<"转制后的矩阵是:"<<endl;
for(i=0;i<3;i++){
for(j=i+1;j<3;j++){
swap(a[i][j],a[j][i]);}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
cout<<a[i][j]<<'\t';}
cout<<endl;
}
}
第3个回答  2010-05-20
#include<iostream>
using namespace std;
float a[3][3];
int main()
{
int i,j;
void change();
cout<<"请输入一个3*3的二维数组:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cin>>a[i][j];
}
change();
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout << a[i][j] << " ";
cout << endl;
}
getchar();
return 0;
}
void change()
{
int i,j;
float temp;
for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)
{
temp = a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
}
测试通过。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网