数字移位

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;
}
原文地址:https://www.cnblogs.com/lwp-nicol/p/14285765.html