写一函数,使一个二维整形数组(3*3)转置,即行列互换
在主函数中输入和输出数组
[此贴子已经被作者于2004-10-31 19:48:32编辑过]
gvtbs,写的程序先不说语法有错,在逻辑上也是错的先贴出我的:
#include <stdio.h>
void main() { int i,j,temp,x[3][3]; //input the array! for (i=0;i<3;i++) { for(j=0;j<3;j++) scanf("%d",&x[i][j]); } //change the x array! for(i=0;i<3-1;i++) { for(j=i+1;j<3;j++) { temp=x[i][j]; x[i][j]=x[j][i]; x[j][i]=temp; } }//end of change^ }
惭愧啊!!没想到指针还挺深奥的有更好的方法!!发短信告诉我!!!
下面是我的程序:
#include <stdio.h> #include <stdlib.h>
//使用本函数请注意规范——x为一正二维整形数组的首元素的首地址!!n为纬数!! void fun(int * x,int n) { int i,j,temp; if(n<=0) exit(1); for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { temp=*((int *)x+i*n+j); *((int *)x+i*n+j)=*((int *)x+j*n+i); *((int *)x+j*n+i)=temp; } } }
void main() { int i,j,x[3][3]; //input the array! for (i=0;i<3;i++) { for(j=0;j<3;j++) scanf("%d",&x[i][j]); }
//change the x array! fun(&x[0][0],3); //printf the array!! for (i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d ",x[i][j]); printf("\n"); } }