写一函数,使一个二维整形数组(3*3)转置,即行列互换
在主函数中输入和输出数组
[此贴子已经被作者于2004-10-31 19:48:32编辑过]
写一函数,使一个二维整形数组(3*3)转置,即行列互换
在主函数中输入和输出数组
[此贴子已经被作者于2004-10-31 19:48:32编辑过]
int m,n,i,j,y[3][3],x[3][3]; scanf("%d,%d",&a,&b); for (m=0,m<3,++m) {for(n=0,n<3,++n) scanf("%d",y[m][n]);} for(i=0,i<a,++i) {for(j=0,j<b,++j) x[i][j]=y[j][i]; }
好了差不多就这样了头尾自己加吧
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^ }
楼上的那种不错
我是想要这种格式的
fun()
{.......}
main()
{......
}
这种
惭愧啊!!没想到指针还挺深奥的有更好的方法!!发短信告诉我!!!
下面是我的程序:
#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"); } }
[QUOTE]惭愧啊!!没想到指针还挺深奥的有更好的方法!!发短信告诉我!!![/QUOTE]
阁下果然行
写一个函数又不是什么有必要写那么多吗??晕啊
只要明白就行