求转置矩阵问题
时间限制:
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
-
第一行一个整数n<20,表示有n组测试数据,下面是n组数据;
说明:转置就是对二维数组位置的调换
已AC源代码:
#include<stdio.h>
int b[3][3];
int main()
{
void ZZ(int a[][3]);
int a[3][3];
int *p;
int i,j,T;
scanf("%d",&T);
while(T--)
{
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
ZZ(a);
for(p=b[0];p<b[0]+9;p++)
{
if(p-b[0]!=0&&(p-b[0])%3==0)
printf("\n");
printf("%d ",*p);
}
printf("\n\n");
}
return 0;
}
void ZZ( int (*p)[3])
{
int i,j,t;
int (*p1)[3];
p1=b;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
*(*(p1+j)+i)=*(*(p+i)+j);
}
}