PAT1008数组元素循环右移问题 (20 分) 为什么只有部分通过

PAT1008数组元素循环右移问题 (20 分) 为什么只有部分通过

#include<iostream>
#include<string>
#include<cstring>

using namespace std;

int main(){
    int N,M;
    cin>>N>>M;
    int a[N];
    for(int i=0;i<N;i++){
        cin>>a[i];
    }
    //for(int i = 0; i < N; i++)
    //{
    //    cout<<a[i]<<" ";
    //}
    int temp[N];
    for(int i=0;i<M;i++){
        temp[i]=a[N-M+i];
    }
    int k=0;
    for(int i=M;i<N;i++){
        temp[i]=a[k];
        k++;
    }
    for(int i=0;i<N-1;i++){
        cout<<temp[i]<<" ";
    }
    cout<<temp[N-1];
    system("pause");
    return 0;

}

部分答案错误:

图片说明

应该在 cin>>N>>M; 这一段后面插入M= M % N; 以确保确保 M<N。图片说明

首先不知道你自己是否编译过,

int a[N];

理论上是不符合标准的,需要动态分配;

其次我不知道是否有N>M的要求,否则你每次需要位移M%N,才能保证数组不会越界。