順時針列印矩陣

2021-06-21 10:40:09 字數 845 閱讀 8762

題目:輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如:如果輸入如下矩陣:

12 34

56 78

910 1112

1314 1516

則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。

解答:這道題看起來很簡單,但是寫起來會很棘手,裡面會有很多迴圈,不知道該怎麼寫邊界條件。下面來分析迴圈,第一圈從從左上角(0,0)開始,第二圈從(1,1)。。。每一圈會使矩陣少兩行兩列,所以如果從左上角(start,start)終止條件是start

void print(int *num,int m,int n)

}

那麼怎麼列印每一圈呢?這裡分為四個部分,從左到右,從上到下,從右到左,從下到上。

如果要列印的話,肯定會有從左到右的列印;

從上到下:必須結束行大於開始行;

從右到左:必須結束行大於開始行並且結束列大於開始列;

從下到上:至少有三行,就是結束行大於開始行+1。

void printcircle(int *num,int m,int n,int start)

{ int endx=m-1-start;

int endy=n-1-start;

int i;

for(i=start;i<=endy;i++) //從做到右

cout{ for(i=start+1;i<=endx;i++)

coutstart) //從右到左

{ for(i=endy-1;i>=start;i--)

coutcout<

順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...

順時針列印矩陣

from 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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。網上聽說聽到包括autod...