读书人

转置矩阵。解决方法

发布时间: 2013-04-02 12:35:26 作者: rapoo

转置矩阵。
描述
求一个三行三列的转置矩阵。
输入
第一行一个整数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);
[解决办法]
你的实参是一个数组元素,被调用函数的形参却是一个数组。
[解决办法]
引用:
C/C++ code?123456789101112131415161718192021222324252627282930#include<stdio.h>int main(){int n,i,j,k;int a[3][3];int exchange(int a[3][3]);scanf("%d",&n); for( k=0;k<n;i++){ for( ……

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;
}

读书人网 >C语言

热点推荐