1851 - 课后习题10.4

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。

题目输入

输入数据的个数n n个整数 移动的位置m

题目输出

移动后的n个数

输入/输出样例

输入格式

10
1 2 3 4 5 6 7 8 9 10
2

输出格式

9 10 1 2 3 4 5 6 7 8 

C语言解答

#include<stdio.h>
int main ()
{
    int move(int n,int m,int *p);
    int n,m,i,a[1000],*p;
    scanf("%d",&n);
    p=a;
    for(i=0;i<n;i++)
    scanf("%d",&*(p+i));
    scanf("%d",&m);
    move(n,m,p);
    for(p=a;p<a+n;)
    printf("%d ",*p++);
}
int move(int n,int m,int *p)
{
    int i;
    for(i=n-1;i>=0;i--)
    {
        *(p+i+m)=*(p+i);
    }
    for(i=n;i<n+m;i++)
    {
        *p++=*(p+n);
    }
}

C++解答

#include<bits/stdc++.h>
using namespace std;
long long n,a[1000000],m;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	    cin>>a[i];
	cin>>m;
	for(int i=n-m+1;i<=n;i++)
	    cout<<a[i]<<" ";
	for(int i=1;i<=n-m;i++)
	    cout<<a[i]<<" ";
		
    return 0;
}