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