由于题目没有说明数组是方阵,所以本答案按一般二维数组处理。
代码文本:
#include "stdio.h"
#define N 3
#define M 5
void myf(int a[][M],int b[][N],int i,int j){//本函数将数组a转置为b
int t;
for(t=j-1,i--;i>=0;i--)
for(j=t;j>=0;b[j][i]=a[i][j--]);
}
int main(int argc,char *argv[]){
int a[N][M],b[M][N],i,j,t;
puts("Transpose before:");
for(t=i=0;i<N;i++){//给数组a赋值并输出
for(j=0;j<M;printf("%3d",a[i][j++]=++t));
putchar('\n');
}
myf(a,b,N,M);//调用转置函数
puts("Transpose later:");
for(i=0;i<M;i++){//输出转置后的数组
for(j=0;j<N;printf("%3d",b[i][j++]));
putchar('\n');
}
return 0;
}