您的位置:首页 > 编程语言 > C语言/C++

C语言对矩阵的转制 二维数组行列互换

2014-03-21 13:08 267 查看
//矩阵的转制就是二维数组的行列互换,比如有这样的一个矩阵a[3][3]= 1,2,3

4,5,6

7,8,9

你的目的就是要把它变成a[3][3]= 1,4,7

2,5,8

3,6,9

你可以发现1,5,9的位置没有改变。 如果你把矩阵按照1,5,9所在的直线对折,发现后来的矩阵跟前面的矩阵重叠的位置交换下 也就是把第1行第2列换成第2行第1列 ,a[0][1]=a[1][0], 因此得出a[i][j]互换a[j][i],这里以3*3的矩阵为例

#include <stdio.h>

#define N 3

void convert(int a[]
)

{

int i,j,temp;

for(i=0;i<N;i++)

for(j=i+1;j<N;j++)

{

temp=a[i][j];

a[i][j]=a[j][i];

a[j][i]=temp;

}

printf("转置后:/n");

for(i=0;i<N;i++)

{

for(j=0;j<N;j++)

printf("%d ",a[i][j]);

putchar('/n');

}

void main()

{

int i,j,a

;

printf("请为数组赋值:");

for(i=0;i<N;i++)

for(j=0;j<N;j++)

scanf("%d",&a[i][j]);

printf("初始数组:/n");

for(i=0;i<N*N;i++)

{

printf("%d ",*(a[0]+i));

if((i+1)%3==0)

printf("/n");

}

convert(array);

printf("/n新数组:/n");

for(i=j=0;i<N*N;i++)

{

printf("%d ",*(a[0]+i))

j++;

if(j%3==0) puts("");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐