[問題] 二維陣列反轉90度

看板C_and_CPP作者 (煩阿煩阿)時間15年前 (2010/03/18 17:28), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我希望可以將一個二維陣列反轉90度 像是int a[3][3]={1,2,3,4,5,6,7,8,9} 1 2 3 4 5 6 7 8 9 希望得到的正確結果: 如果把它反轉90度變成 a[3][3]={3,6,9,2,5,8,1,4,7} 3 6 9 2 5 8 1 4 7 程式跑出來的錯誤結果: 我寫的程式好像只有第一列可以正確的反轉 之後幾列都是錯的 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev C++ 有問題的code: (請善用置底文標色功能) 以下是我全部的程式碼 #include<stdio.h> #include<stdlib.h> int main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; int x; for(int z=0;z<3;z++) for(int s=0;s<3;s++) printf("first %d\n",a[z][s]); printf("\n"); for(int i=0;i<3;i++) for(int j=0;j<3;j++) { if(i==0) { a[0][j]=a[j][2]; } if(i==1) { a[1][j]=a[j][1]; } if(i==2) { a[2][j]=a[j][0]; } } for(int f=0;f<3;f++) for(int g=0;g<3;g++) printf("second %d\n",a[f][g]); system("PAUSE"); exit(0); } 補充說明: 會錯好像是因為第一列的陣列已經重排過了 所以這樣寫第二三列會有錯誤 但是不這樣寫我就不知道該如何寫了 X請問該如何修改呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.136.211.113

03/18 17:44, , 1F
先學著直接開另一個array b, 把轉90度的放到b以後, 再整
03/18 17:44, 1F

03/18 17:45, , 2F
份copy回a, 看看這樣你是不是就做得出來; 先把基本的作
03/18 17:45, 2F

03/18 17:45, , 3F
法弄通了, 再來研究比較省計算省記憶體的方法....
03/18 17:45, 3F

03/18 21:00, , 4F
用索引值來改
03/18 21:00, 4F
文章代碼(AID): #1BeV8yHT (C_and_CPP)