数组元素循环右移问题
题目链接
题源:PTA中MOOC数据结构自测第三题
思路
1、假定m小于n,则先输出后m个数字,再输出前n-m个数字,此时应注意题中要求最后一位数后不得出现空格及换行,因此第n-m个应单独处理,对其单独输出。
2、再考虑m>=n,此时相当于先整体循环右移m/n圈后右移m%n位,可将m按照m%n进行处理
代码
#include <stdio.h>
int main()
{
int n,m,a[105];
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=n-m%n;i<n;i++){
printf("%d ",a[i]);
}
for(int i=0;i<n-m%n;i++){
if(i==n-m%n-1) printf("%d",a[n-m%n-1]);
else printf("%d ",a[i]);
}
}
出现的问题
1、首次提交忽略了m大于n的情况