写一个函数,使给定的一个二维数组 (3×3)转置,即行列互换
---------------------------------------->
第一种:
#include<stdio.h>
void zhuangzhi(int a[3][3])
{
int b[3][3];
for(int i = 0;i < 3;i++){
for(int j = 0;j < 3;j++){
b[i][j] = a[i][j];
}
}//将原来的二维数组赋给一个新数组,这个数组不会变
for(int i = 0;i < 3;i++){
for(int j = 0;j < 3;j++){
a[i][j] = b[j][i];//因为a数组会变,不能a[i][j] = a[j][i];
}
}
}
int main()
{
int a[3][3];
int i, j;
for (i= 0; i < 3; i++)
for (j= 0; j < 3; j++)
scanf("%d", &a[i][j]);
zhuangzhi(a);
for (i= 0; i < 3; i++)
{
for (j= 0; j < 3; j++)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
第二种:
#include<stdio.h>
void zhuangzhi(int a[][3])
{
int t;
for (int i = 0; i < 3; i++)
for (int j = i; j < 3; j++) //遍历对角线上方元素进行互换
{
t = a[j][i];
a[j][i] = a[i][j]; //行列互换
a[i][j] = t;
}
}
int main()
{
int a[3][3];
int i, j;
for (i= 0; i < 3; i++)
for (j= 0; j < 3; j++)
scanf("%d", &a[i][j]);
zhuangzhi(a);
for (i= 0; i < 3; i++)
{
for (j= 0; j < 3; j++)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
点个小赞吧!谢谢。