转置矩阵。
描述
求一个三行三列的转置矩阵。
输入
第一行一个整数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,i,j;
int a[3][3];
int exchange(int a[3][3]);
scanf("%d",&n);
for( i=0;i<n;i++)
{
for( i=0;i<3;i++)
for( j=0;j<3;j++)
scanf("%d",&a[i][j]);
exchange(a[3][3]);
}
return 0;
}
int exchange(int a[3][3])
{int i,j;
int b[3][3];
for(i=0;i<3;i++)
for( j=0;j<3;j++)
{
int t;
t=a[i][j];
b[j][i]=a[i][j];
a[i][j]=t;
}
for( i=0;i<3;i++)
for( j=0;j<3;j++)
printf("%d",b[i][j]);
printf("\n");
return 0;
}
为什么编译一直显示--------------------Configuration: 矩阵转置 - Win32 Debug--------------------
Compiling...
矩阵转置.cpp
F:\矩阵转置.cpp(14) : error C2664: 'exchange' : cannot convert parameter 1 from 'int' to 'int [][3]'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.
[解决办法]
exchange(a[3][3]);改为exchange(a);
[解决办法]
你的实参是一个数组元素,被调用函数的形参却是一个数组。
[解决办法]
int exchange(int a[3][3])
{ int i,j;
int b[3][3];
printf("%d %d %d\n%d %d %d\n%d %d %d\n",a[0][0],a[1][0],a[2][0],a[0][1],a[1][1],a[2][1],a[0][2],a[1][2],a[2][2]);
return 0;
}