C语言菜鸟问题..3*3数组转换,却转换不了..

来源:百度知道 编辑:UC知道 时间:2024/06/28 15:11:13
void reverse(int arr[][3]);
int main(int argc, char* argv[])
{
int a[3][3]={1,2,3,4,5,6,7,8,9};

for(int i = 0;i<3;++i)
{
for(int j = 0;j<3;++j)
{
scanf("%d",&a[i][j]);
}
}

for(i = 0;i<3;++i)
{
for(int j = 0;j<3;++j)
{
printf("%d ",a[i][j]);
}
printf("\n");

}
reverse(a);
for(i = 0;i<3;++i)
{
for(int j = 0;j<3;++j)
{
printf("%d ",a[i][j]);
}
printf("\n");
}

return 0;
}
void reverse(int arr[][3])
{
int t = 0;
int b[3][3];
for(int k = 0;k<3;++k)
{
for(int l =0;l<3;++l)
{
b[k][l]=b[l][k];

b[l][k]=b[k][l];

reverse函数执行的时候由于转换了两次,所以又换回来了...
改成:
void reverse(int arr[][3])
{
int t = 0;
for(int k = 0;k<3;++k)
{
for(int l =0;l<k;++l) //注意这里的循环条件:l<k
{
t=arr[k][l];
arr[k][l]=arr[l][k];
arr[l][k]=t;
}
printf("\n");

}