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,才能保证数组不会越界。