写一个函数,使给定的一个3×3的二维整型数组转置,即行列互换。

#include <stdio.h>
#include <stdlib.h>
void f(int a1[3][3])
{
int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
t=a1[j][i];
a1[j][i]=a1[i][j];
a1[i][j]=t;
}
}
main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int b1[3][3];
f(a);
b1=f(a);
printf("转置后的数组为%d",b1);
system("PAUSE");
return 0;
}
错误如图 求指导

#include <stdio.h>
#include <stdlib.h>
void f(int a1[3][3])
{
int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
t=a1[j][i];
a1[j][i]=a1[i][j];
a1[i][j]=t;
}
}
main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j;
f(a);
printf("转置后的数组为\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
system("PAUSE");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-11
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b[3][3]={{1,2,3},{5,6,7},{8,9,10}},a[3][3];
int i,j;
printf("原数组是:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5.0f",b[i][j]);
putchar('\n');
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)a[j][i]=b[i][j];
printf("转置后:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%3.0f",a[i][j]);
putchar('\n');
}
system("PAUSE");
return 0;
}
第2个回答  2012-05-11
#include <stdio.h>
#include <stdlib.h>
void f(int a1[3][3],int b[3][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[i][j]=a1[j][i];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a1[i][j]=b[i][j];

}
main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int b1[3][3] ,i,j;
f(a,b1);

for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n"); }
system("PAUSE");
return 0;
}
第3个回答  2012-05-11
f的返回值是void追问

简短精炼 可惜我这个菜脑袋不太灵光 想了一会才懂 真心表示感谢!

相似回答