7-1 矩阵转置
要求定义并调用函数void move(int *pointer),实现上述矩阵转置的功能。
输出格式:每行数据之间以空格分隔,最后一个数据后面没有空格
输入样例:
1 2 3
4 5 6
7 8 9
输出样例:
1 4 7
2 5 8
3 6 9
#include<stdio.h>
void move(int *pointer)
{
int i,j,tmp;
for(i=0;i<3;i++)
{
for(j=0;j<i;j++)//交换,j<i是为了不让数组交换两次(如果用j<3会进行两次交换),回到原来的样式
{
tmp = *(pointer+i*3+j);//用一维指针表示数组
*(pointer+i*3+j)= *(pointer+j*3+i);
*(pointer+j*3+i) = tmp;
}
}
}
int main()
{
int a[3][3],i,j,tmp;
int *pointer;
pointer=&a[0][0];
for(i=0;i<3;i++)//输入矩形阵
{
for(j=0;j<3;j++)
scanf("%d ",&a[i][j]);
}
move(pointer);//进入函数
int count=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(j<2)
{
printf("%d ",a[i][j]);
}
else
printf("%d",a[i][j]);
}
printf("\n");
}
return 0;
}
可以定义一维数组,也可以定义二位数组,这里指针使用一维