求转置矩阵问题
时间限制:3000 ms | 内存限制:65535 KB
难度:2
- 描述
- 求一个三行三列的转置矩阵。
- 输入
- 第一行一个整数n<20,表示有n组测试数据,下面是n组数据;
每组测试数据是九个整型数(每个数都不大于10000),分别为矩阵的的每项; - 输出
- 每组测试数据的转置矩阵;
请在每组输出之后加一个换行 - 样例输入
2 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 1
样例输出
1 4 7 2 5 8 3 6 9 2 5 8 3 6 9 4 7 1
下面是我写的代码,能通过。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int a[3][3],i,j,t;
scanf("%d%d%d%d%d%d%d%d%d",&a[0][0],&a[0][1],&a[0][2],&a[1][0],&a[1][1],&a[1][2],&a[2][0],&a[2][1],&a[2][2]);
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{ if(i==1&&j==0)
continue;
else
{
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++)
printf("%d ",a[i][j]);
printf("
");}
printf("
");
}
}
下面是最优程序,大家可以参考下
#include<iostream>
using namespace std;
int main()
{
int num,a,b,c,d,e,f,g,h,i;
cin>>num;
while(num--)
{
cin>>a>>b>>c>>d>>e>>f>>g>>h>>i;
cout<<a<<" "<<d<<" "<<g<<endl<<b<<" "<<e<<" "<<h<<endl<<c<<" "<<f<<" "<<i<<endl<<endl;
}
}