PTA6-26-一維陣列 陣列迴圈右移 (20 分)
阿新 • • 發佈:2021-02-10
題目
本題要求實現一個對陣列進行迴圈右移的簡單函式:一個數組a中存有n(>0)個整數,將每個整數迴圈向右移m(≥0)個位置,即將a中的資料由(⋯ ) 變換為(⋯ ⋯ )(最後m個數迴圈移至最前面的m個位置)。
函式介面定義:
int ArrayShift( int a[], int n, int m );
其中a[]
是使用者傳入的陣列;n
是陣列的大小;m
是右移的位數。函式ArrayShift
須將迴圈右移後的陣列仍然存在a[]
中。
裁判測試程式樣例:
#include <stdio.h> #define MAXN 10 int ArrayShift( int a[], int n, int m ); int main() { int a[MAXN], n, m; int i; scanf("%d %d", &n, &m); for ( i = 0; i < n; i++ ) scanf("%d", &a[i]); ArrayShift(a, n, m); for ( i = 0; i < n; i++ ) { if (i != 0) printf(" "); printf("%d", a[i]); } printf("\n"); return 0; } /* 你的程式碼將被嵌在這裡 */
輸入樣例:
6 2
1 2 3 4 5 6
輸出樣例:
5 6 1 2 3 4
我的程式碼:
int ArrayShift( int a[], int n, int m )
{
int i;
int b[n];
for(i=0;i<n;i++)
b[(i+m)%n]=a[i];
for(i=0;i<n;i++)
a[i]=b[i];
}
題目來源: