我用的方法很笨,因为不让修改主程序的代码框架,所以有没有好的方法把我人为3*3赋值那块改成任意数组?
//阅读下面程序,完成下面三个函数,使给定的一个3×3的二维整型数组转置,即行列互换。请使用指针实现。
#include <stdio.h>
#define N 3
void inputmatrix(int *p)
{
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&*p);
p++;
}//这个指针形式的二维数组的输入可以考虑考虑成三个一维数组。
}
///程序填空,请将该函数填写完整
}
void transpose(int *p)
{
int i,j=0;
int t[9];
for(i=0,j=0;i<9;i++,j++){
t[j]=*(p+j);
}
*p=t[0];
*(p+1)=t[3];
*(p+2)=t[6];
*(p+3)=t[1];
*(p+4)=t[4];
*(p+5)=t[7];
*(p+6)=t[2];
*(p+7)=t[5];
*(p+8)=t[8];
/*123
456
789
147
258
369*/
///程序填空,请将该函数填写完整
}
void printmatrix(int *p)
{
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ",*p);
p++;
}
printf("\n");
}
///程序填空,请将该函数填写完整
}
int main()
{
int s[N][N], *p;
p = &s[0][0];
inputmatrix(p);
transpose(p);
printmatrix(p);
return 0;
}