C++编程 矩阵转置

输入n,并判断该值是否为4,如果为4,则连续输入16个整型数,按行作为4阶矩阵的元素,完成矩阵转置后,按行输出矩阵元素;如果不为4,则显示提示信息“only handle fourth order matrix”。

第1个回答  推荐于2017-09-11
#include "iostream"
using namespace std;
int main()
{
int n = 0,mat[4][4];
cout<<"请输入矩阵阶数"<<endl;
cin>>n;
while (n!=4)
{
cout<<"only handle fourth order matrix"<<endl;
cout<<"请重新输入矩阵阶数"<<endl;
cin>>n;
}
cout<<"请输入矩阵元素"<<endl;

cin>>mat[0][0]>>mat[0][1]>>mat[0][2]>>mat[0][3];
cin>>mat[1][0]>>mat[1][1]>>mat[1][2]>>mat[1][3];
cin>>mat[2][0]>>mat[2][1]>>mat[2][2]>>mat[2][3];
cin>>mat[3][0]>>mat[3][1]>>mat[3][2]>>mat[3][3];
cout<<endl;
cout<<"输入的矩阵为:"<<endl;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
cout<<mat[i][j]<<" ";
}
cout<<endl;
}
int t;
for (int i = 0; i < 3; i++)
{
for (int j = i; j < 4; j++)
{
if (j!=i)
{
t = mat[i][j];
mat[i][j] = mat[j][i];
mat[j][i]=t;
//swap(mat[i][j],mat[j][i]);
}
}
}
cout<<"转置后的矩阵为:"<<endl;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
cout<<mat[i][j]<<" ";
}
cout<<endl;
}
return 0;
}追问

这个运行时间过长,有更简单的吗?

追答

你不会是参加比赛吧?简单的要优化一下了

追问

您能再发一个简单的吗

追答

不知道你说的运行时间过长是指转换时间?你用swap试一下,就是我屏蔽的那个函数。

追问

swap我不会用,帮忙写个程序,谢谢

追答

t = mat[i][j];
mat[i][j] = mat[j][i];
mat[j][i]=t;
//swap(mat[i][j],mat[j][i]);
把前三行删了,然后swap前面的//删掉。估计不符合你的要求。我觉得4*4的执行一次的话,这两个差不多那么多的执行时间。你说的执行慢?适合其他程序一起运行?单独运行这个程序,速度应该没问题,因为只执行了一次4*4的转换

追问

还是不行

追答

爱莫能助了

追问

谢谢帮忙

本回答被网友采纳

相关了解……

你可能感兴趣的内容

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