C語言題目小記 陣列迴圈右移

2021-10-11 20:46:39 字數 1109 閱讀 7464

題目描述

編制程式,輸入整型變數n和m,建立乙個長度為n的一維整型陣列並輸入所有陣列元素。將陣列中的元素迴圈右移m個位置後按順序輸出該陣列所有元素。

例如:原陣列為: 1 2 3 4 5 迴圈右移3個位置後應該變為 3 4 5 1 2

注意:m的值如果大於等於5該如何處理

輸入描述輸入第1行給出正整數n 和整數m(≥0);第2行給出n個整數,其間以空格分隔

輸出描述在一行中輸出迴圈右移m位以後的整數序列,之間用空格分隔,序列結尾不能有多餘空格。

提示

樣例輸入

8 31 2 3 4 5 6 7 8

樣例輸出

6 7 8 1 2 3 4 5

思路

在解決陣列迴圈移動問題時可以將陣列看成兩個依據移動值劃分而成的整體,例如:樣例中要求右移三位,就可以將1 2 3 4 5 6 7 8 看成兩個整體,1 2 3 4 5 和 6 7 8,此時右移就相當於兩個部分的位置交換。交換的過程可以通過以下的反轉來實現:

第一步:先將兩部分分別反轉 即:1 2 3 4 5 6 7 8 --> 5 4 3 2 1 8 7 6

第二步:將整個序列反轉 即:5 4 3 2 1 8 7 6 --> 6 7 8 1 2 3 4 5 此時已得到移動後的序列

**

#include

intmain

(void

)//將前方元素反轉

for(

int i =

0; i <

(n - k)/2

; i++

)//將整個序列反轉

for(

int i =

0; i < n /

2; i++

)//輸出結果

for(

int i =

0; i < n; i++

)return0;

}

C語言 陣列迴圈右移問題

題目來自貴大oj。題目描述 編制程式,輸入整型變數n和m,建立乙個長度為n的一維整型陣列並輸入所有陣列元素。將陣列中的元素迴圈右移m個位置後按順序輸出該陣列所有元素。例如 原陣列為 1 2 3 4 5 迴圈右移3個位置後應該變為 3 4 5 1 2 注意 m的值如果大於等於5該如果處理 輸入描述 輸...

C 學習小記陣列和指標

int arr 2 3 cout 二維陣列占用記憶體空間為 sizeof arr 二維陣列第一行占用記憶體空間為 sizeof arr 0 二維陣列第乙個元素占用記憶體空間為 sizeof arr 0 0 二維陣列的行數為 sizeof arr sizeof arr 0 二維陣列的列數為 sizeo...

(C語言)PAT乙等1008陣列元素迴圈右移問題

一 題目 乙個陣列a中存有n 0 個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移m 0 個位置。如果需要考慮程式移動資料的次數盡量少,要如何設計移動的方法?輸入格式 每個輸入包含乙個測試用例,第1行輸入n 1 n 100 和m 0 第2行輸入n個整數,之間用空格分隔。輸出格式 在一行中輸...