1. 描述
給定一方陣,順時針列印方陣的值,如方陣:
1, 2, 3, 4
5, 6, 7, 8
9,10,11,12
13,14,15,16
則列印結果為:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10
2. 思路
從外到內每一次列印有4條邊組成的方框,如
(1)第一條邊1,2,3
(2)第二條邊4,8,12
(3)第三條邊16,15,14
(4)第四條邊13,9,5
**如下:
void printmatrixclockwise(int n, int matrix[n]) //n行n列,矩陣matrix下標從0開始
if (n & 1) //如果n是奇數的時候,最中間的那個元素在上面的迴圈中列印不出來
printf("%d\n", matrix[n >> 1][n >> 1]);
}
測試如下:
#include void printmatrixclockwise(int n, int matrx[n]);
int main(void)
; int matrix2[4][4] = ;
int n = 5, n2 = 4;
printf("matrix:\n");
printmatrixclockwise(n, matrix);
printf("matrix2:\n");
printmatrixclockwise(n2, matrix2);
return 0;
}
輸出:
當矩陣的行數與列數不相等是也是類似的。
對方陣順時針旋轉
對乙個方陣轉置,就是把原來的行號變列號,原來的列號變行號 例如,如下的方陣 轉置後變為 1 2 3 4 1 5 9 13 5 6 7 8 2 6 10 14 9 10 11 12 3 7 11 15 13 14 15 16 4 8 12 16 但,如果是對該方陣順時針旋轉 不是轉置 卻是如下結果 1...
順時針列印矩陣
輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 45 6 7 89 10 11 1213 14 15 16則依次列印出數字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。這個題目 寫的並不好感覺,好多if看著就煩,就是...
順時針列印矩陣
題目 給定乙個矩陣,從外向內順時針列印矩陣中的每乙個數字。例如 給定矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 輸出應該為 分析 這道題的意思非常直觀,給人的感覺也是so easy,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...