C语言-矩阵转置

Python09

C语言-矩阵转置,第1张

①目标

将一个二维数组表示的矩阵转置

②命令行

#include<stdio.h>

#include<stdlib.h>

~

③定义函数

void fun(int array[3][3])

{int i,j,t

for(i=0i<3i++)

for(j=i+1j<3j++)

/*注意:只遍历了矩阵的右上半部分。

如果for(j=0j<3j++,表示遍历矩阵全部元素,右上与左下交换,左下又与右上交换,导致重复转置,矩阵没有变化。*/

{t=array[i][j]

array[i][j]=array[j][i]

array[j][i]=t}

/*交换语句,矩阵右上半部分,与对应左下半部分,元素交换,完成转置*/

}

~

④主函数(调用)

void main()

{int i,j

int array[3][3]={{1,2,3},{4,5,6},{7,8,9}}

for(i=0i<3i++)

{for(j=0j<3j++)

/*输出原矩阵,遍历全部*/

printf("%7d",array[i][j])

printf("\n")}

fun(array)

/*利用fun函数完成转置*/

printf("converted array:\n")

for(i=0i<3i++)

{for(j=0j<3j++)

printf("%7d",array[i][j])

printf("\n")}

}

//try it 试试看

#include <stdio.h>

void transpose( int a[6][6],int n)

{

int i,j,temp

for(i=0i<ni++)

for (j=0j<ij++)

{temp=a[i][j]a[i][j]=a[j][i]a[j][i]=temp}

}

void main()

{

int i,j,a[6][6],n

printf("please input the 维度<1-6>:")

scanf("%d",&n)

printf("请输入数组元素:\n")

for (i=0i<ni++)

for(j=0j<nj++)

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

transpose(a,n)

printf("操作后的数组为:\n")

for (i=0i<ni++)

{

for(j=0j<nj++)

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

}

#include <stdio.h>

int main()

{ struct aaa

{ int x

  int y

}

struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2}

int i,j

for(i=0i<3i++)

{ for(j=0j<3j++)

    printf("[%d,%d]  ",a[i][j].x,a[i][j].y)

  printf("\n")

}

printf("after:\n")

for(i=0i<3i++)

  for(j=0j<ij++)

  { t=a[i][j]

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

    a[j][i]=t

  }

for(i=0i<3i++)

{ for(j=0j<3j++)

    printf("[%d,%d]  ",a[i][j].x,a[i][j].y)

  printf("\n")

}

return 0

}

或:

#include <stdio.h>

struct aaa

{ int x

int y

}

void zhuanzhi(struct aaa a[][3])

{ struct aaa t

int i,j

for(i=0i<3i++)

  for(j=0j<ij++)

  { t=a[i][j]

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

    a[j][i]=t

  }

}

void prt(struct aaa a[][3])

{ int i,j

for(i=0i<3i++)

{ for(j=0j<3j++)

    printf("[%d,%d]  ",a[i][j].x,a[i][j].y)

  printf("\n")

}

}

int main()

{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2}

prt(a)

zhuanzhi(a)

printf("after:\n")

prt(a)

return 0

}