任务描述
本关任务: 指针实现写一个函数,将一个3×3的整数矩阵转置。
相关知识
为了完成本关任务,你需要掌握: 1.矩阵的转置算法; 2.二维数组的定义; 3.二维数组的指针; 4.函数的定义、调用及参数传递。
矩阵的转置算法
见第5章编程习题4
二维数组的定义
见教材
二维数组的指针
见教材
函数的定义、调用及参数传递
见教材
编程要求
1.编写函数move(int *point),其中形参指针point指向二维数组a[0][0],实现二维数组的转置; 2.编写主函数,完成: (1)定义和初始化好二维数组; (2)调用move函数实现矩阵的转置; (3)显示转置的后的二维矩阵; (4)根据提示,在编辑器补充代码,实现本关功能。
测试说明
原始矩阵为:
1 2 3
4 5 6
7 8 9
转置后矩阵为:
1 4 7
2 5 8
3 6 9
#include<stdio.h>
void move(int (*p)[3])
{
int i,j,temp;
for(i=0;i<3;i++)
for(j=0;j<i;j++)
{
temp=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=temp;
}
}
int main()
{
int a[3][3];
int (*p)[3],i,j,temp;
p=a;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
move(p);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d ",*(*(p+i)+j));
printf("\n");
}
return 0;
}