1851 - 课后习题10.4
时间限制 : 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; }