1188 数字移位
题目描述
有n个整数,要求将前面各数字顺序向后移动m个位置,并将最后面的m个数变成最前面m个数。其中,移动2个位置后的效果如下图所示:
输入描述
/*
第一行输入两个正整数:n,m。n表示原始数据的个数,m表示需要向后移动的位置数。
第二行输入这n个原始整数。(n<=100)
*/
7 3
1 2 5 4 7 8 3
输出描述
/*
输出经过调整后的n个数。
提示:输出时,最后一个数据后面直接换行。
*/
7 8 3 1 2 5 4
#include<stdio.h>
void reverses(int a[],int left,int right){
int i = 0;
int temp=0;
int mid = (right-left+1)/2;
for(i=0;i<mid;i++){
temp = a[i+left];
a[i+left] = a[right-i];
a[right-i] = temp;
}
}
//1 2 5 4 7 8 3
//3 8 7 4 5 2 1
//7 8 3 1 2 5 4
int main()
{
int n=0,m=0,i=0;
int a[101];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
reverses(a,0,n-1);
reverses(a,0,m-1);
reverses(a,m,n-1);
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d
",a[n-1]);
return 0;
}