输入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;
}追问
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的转换
还是不行
追答爱莫能助了
追问谢谢帮忙
本回答被网友采纳