解题思路:
思路一:再建一个数组b,使b接收a变化后的值,再将b的值赋给a
,最后输出a,此种思路易于理解,但代码稍微繁琐
分三种情况:
1.当m%n==0时,b[i]=a[i];
2.当m>n时,b[i]=a[(n+i-m%n)%n];
3.当m<n时,b[i]=a[(n+i-m)%n];
思路二:直接令m=m%n;第一步输出n-m到n-1的内容,第二步输出
0到n-m-1的内容,注意一下空格就可以
#include <stdio.h>
int main()
{
int n,m,c=0;
scanf("%d %d",&n,&m);
int a[n];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
m=m%n;
for(int i=n-m;i<n;i++)
{
printf("%d",a[i]);
c++;
if(c<n)
printf(" ");
}
for(int i=0;i<n-m;i++)
{
printf("%d",a[i]);
c++;
if(c<n)
printf(" ");
}
return 0;
}