C 语言 帮帮看下错在哪

来源:百度知道 编辑:UC知道 时间:2024/07/03 08:31:20
这是写一函数把3*3的二维数组倒置,大虾帮忙看看错在哪?
void sort(int arry[][3])
{
int i,k,t;
for(i=0;i<3;i++)
{
for(k=0;k<3;k++)
t=arry[i][k];
arry[k][i]=t;
}

}

main()
{

int i,k;
static ary[3][3]={{1,2,3},{4,5,6},{7,8,9}};
sort(ary);
for(i=0;i<3;i++)
{for(k=0;k<3;k++)
printf("%d",ary[i][k]);
printf("\n");
}
}

有如下改动:
void sort(int arry[][3])
{
int i,k,t;
for(i=0;i<3;i++)
{
for(k=i;k<3;k++) /*k的初值应该和i一样*/
{
t=arry[i][k];
arry[i][k]=arry[k][i]; /*这里赋值要这样赋值*/
arry[k][i]=t;
}
}

}

main()
{
int i,k;
static ary[3][3]={{1,2,3},{4,5,6},{7,8,9}};
sort(ary);
for(i=0;i<3;i++)
{
for(k=0;k<3;k++)
printf("%d ",ary[i][k]);
printf("\n");
}
}
现在你试试,已经可以实现倒置功能了.

#include "stdio.h"

void sort(int arry[][3])
{
int i,k,t;
for(i=0;i<3;i++)
for(k=0;k<i;k++) {
t=arry[i][k];
arry[i][k]=arry[k][i];
arry[k][i]=t;
}

}

main()
{

int i,k;
static ary[3][3]={1,2,3,4,5,6,7,8,9};
sort(ary);
for(i=0;i<3;i++)
{for(k=0;k<3;k++)
printf("%d",ary[i][k]);
printf