#include&a葡矩酉缸mp;lt;iostream>
#include<ioma荏鱿胫协nip>
usingnamespacestd;
intmain()
{
voidmove(int*pointer);//函数声明
inta[3][3],i,j;
int*p;
cout<<"请输入矩阵元素:"<<endl;
for(i=0;i<3;i++)//输入数组
{
for(j=0;j<3;j++)
{
cin>>a<i>[j];
}
}
cout<<"输出原矩阵:"<<endl;//输出矩阵
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<setw(5)<<a<i>[j];
}
cout<<endl;
}
p=&a[0][0];//将数组首元素赋给指针变量p
move(p);//函数调用
cout<<"处理后的矩阵:"<<endl;
for(i=0;i<3;i++)//输出处理后的矩阵
{
for(j=0;j<3;j++)
{
cout<<setw(5)<<a<i>[j];
}
cout<<endl;
}
return0;
}
//交换函数
voidmove(int*pointer)
{
inti,j,t;
for(i=0;i<3;i++)
{
for(j=i;j<3;j++)
{
t=*(pointer+3*i+j);//这是关键将矩阵转置的条件
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
}
}
扩展资料:
用函数
#include<stdio.h>
intmain()
{
voidmove(int*s);
inta[3][3];inti=0;
int*p=&a[0][0];
printf("请输入一个3*3的数组:\n");
for(i=0;i<3;i++)
{
scanf("%d%d%d",&a<i>[0],&a<i>[1],&a<i>[2]);
}
move(p);
printf("转置后的结果:\n");
for(i=0;i<3;i++)
{
printf("%d%d%d\n",a<i>[0],a<i>[1],a<i>[2]);
}
return0;
}
voidmove(int*s)
{
inti,j,t;
for(i=0;i<3;i++)
{
for(j=i;j<3;j++)
{
t=*(s+3*i+j);
*(s+3*i+j)=*(s+3*j+i);
*(s+3*j+i)=t;
}
}
}