本題要求編寫程式,將給定n×n方陣中的每個元素迴圈向右移m個位置,即將第0、1、⋯、n−1列變換為第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。
輸入格式:
輸入第一行給出兩個正整數m和n(1≤n≤6)。接下來一共n行,每行n個整數,表示乙個n階的方陣。
輸出格式:
按照輸入格式輸出移動後的方陣:即輸出n行,每行n個整數,每個整數後輸出乙個空格。
輸入樣例:
231
2345
6789
輸出樣例:
231
5648
97
#include
intmain()
}for
(i=0
;i) shu[i][0
]=t;}}
for(i=
0;i)printf
("\n");
}return0;
}
關於此題,我原先一直都是採用的乙個很麻煩的做法,在本文的最下面也會出現
但是對於上述這個做法,是老師給我講的,真的是很妙,就和妙蛙種子吃了妙脆角妙到了公尺奇妙妙屋妙到家了一樣妙。
那就是對於該題來說,不管一開始給的m是幾,我都是乙個乙個數的向後移動,然後迴圈m次即可,方便又實用!
下面是一般題目通用模板:
int
arrayshift
(int a,
int m,
int n)
a[0]
=t;}
}
這個模板可能有不妥的地方,不用管,主要是這個思路難能可貴:
就是首先定義乙個t,m是移動的位數,n是陣列長度,在外迴圈內,內迴圈外,首先讓t=數列a的最後一項(暫存這個最後一項的數值),然後內迴圈中,讓i=n-2,i>=0,i–,讓i=n-2的原因即讓其從倒數第二項開始依次向後推乙個,最後迴圈結束後,再把剛才儲存的最後乙個賦給第乙個,即完成依次向後推乙個的操作,迴圈m次後即可後移m個位數嘍(當然模板給的是一維陣列的情況,你像本題中即是乙個二維陣列,但無傷大雅,一樣做,很容易,就是再在最外面套乙個大迴圈代表行數唄)
7 12 方陣迴圈右移 20 分
本題要求編寫程式,將給定n n方陣中的每個元素迴圈向右移m個位置,即將第0 1 n 1列變換為第n m n m 1 n 1 0 1 n m 1列。輸入格式 輸入第一行給出兩個正整數m和n 1 n 6 接下來一共n行,每行n個整數,表示乙個n階的方陣。輸出格式 按照輸入格式輸出移動後的方陣 即輸出n行...
7 17 方陣迴圈右移 20分
本題要求編寫程式,將給定n n方陣中的每個元素迴圈向右移m個位置,即將第0 1 n 1列變換為第n m n m 1 n 1 0 1 n m 1列。輸入格式 輸入第一行給出兩個正整數m和n 1 n 6 接下來一共n行,每行n個整數,表示乙個n階的方陣。輸出格式 按照輸入格式輸出移動後的方陣 即輸出n行...
7 2 方陣迴圈右移 20分
7 2 方陣迴圈右移 20分 本題要求編寫程式,將給定n n方陣中的每個元素迴圈向右移m個位置,即將第0 1 n 1列變換為第n m n m 1 n 1 0 1 n m 1列。輸入格式 輸入第一行給出兩個正整數m和n 1 n 6 接下來一共n行,每行n個整數,表示乙個n階的方陣。輸出格式 按照輸入格...