PTA 數組循環右移


6-2 數組循環右移 (20 分)
 

本題要求實現一個對數組進行循環右移的簡單函數:一個數組a中存有n(>)個整數,將每個整數循環向右移m(≥)個位置,即將a中的數據由(a0​​a1​​an1​​)變換為(anm​​an1​​a0​​a1​​anm1​​)(最后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

 1 int ArrayShift( int a[], int n, int m ){
 2     int t=0;
 3     for(int j=0;j<m;j++){
 4         t=a[n-1];
 5         for(int i=n-1;i>0;i--){
 6             
 7             a[i]=a[i-1];
 8         }
 9         a[0]=t;
10     }
11     return 1;
12 }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM