3467 - 习题8-4 移动数据
输入n个整数(不超过10),使前面各数顺序后移m个位置,最后m个数变成最前面的m个数(m<n),写一个函数实现上述功能。
在main函数中调用该函数,最后分行输出移动后的n个数,每个数占一行。
输入输出都在main函数中进行。
n和m以及n个数都需要从键盘上进行输入。
Input
输入分三行
第一行输入一个数字(假设该数字以n表示,不超过10),表示要输入的数据个数
第二行输入以空格分隔的n个数
第三行输入后移的位置(假设该数字以m表示,m<n)
Output
分行输出移动后的数据,每个数字单独占一行。
Examples
Input
10 1 2 3 4 5 6 7 8 9 0 3
Output
8 9 0 1 2 3 4 5 6 7
Solution C
#include <stdio.h> void main() { void move(int a[10],int n,int m); int n,m; int i; int a[10]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&m); move(a,n, m); for(i=0;i<n;i++) { printf("%d\n",a[i]); } printf("\n"); } void move(int a[10],int n,int m) { int *p,array_end; array_end=*(a+n-1); for(p=a+n-1;p>a;p--) *p=*(p-1); *a=array_end; m--; if(m>0) move(a,n,m); }