C语言程序设计教程(第三版)课后习题10.4
1353: C语言程序设计教程(第三版)课后习题10.4
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 296 Solved: 219
[Submit][Status][BBS]
Description
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。
Input
输入数据的个数n n个整数移动的位置m
Output
移动后的n个数
Sample Input
10 1 2 3 4 5 6 7 8 9 10 2
Sample Output
9 10 1 2 3 4 5 6 7 8
#include <stdio.h> const int N=100000; int n,a[N],b[N],m; void Move() { for(int i=0; i<m; i++) { b[m-1-i]=a[n-1-i];//另开一个数组,从后往前存,a数组的最后几个数先腾到一边 } for(int i=n-1; i>=0; i--) { if(i>=m) a[i]=a[i-m]; if(i<m) a[i]=b[i];//直接赋值到a数组的前面 } } int main() { while(scanf("%d",&n)!=EOF) { for(int i=0; i<n; i++) { scanf("%d",&a[i]); } scanf("%d",&m); Move(); for(int i=0; i<n; i++) { printf("%d ",a[i]); } printf("\n"); } return 0; }