~
②命令行
#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
}