题目:有 n个整数,使其前面各数顺序向后移 m 个位置,最后m个数变成最前面的 m 个数。html
程序分析:无。数组
实例:学习
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int arr[20]; 6 int i,n,offset; 7 //输入数组大小和数组内容 8 printf("Total numbers?\n"); 9 scanf("%d",&n); 10 printf("Input %d numbers.\n",n); 11 for(i=0;i<n;i++) 12 scanf("%d",&arr[i]); 13 //输入滚动偏移量 14 printf("Set your offset.\n"); 15 scanf("%d",&offset); 16 printf("Offset is %d.\n",offset); 17 //打印滚动前数组 18 print_arr(arr,n); 19 //滚动数组并打印 20 move(arr,n,offset); 21 print_arr(arr,n); 22 } 23 24 //打印数组 25 void print_arr(int array[],int n) 26 { 27 int i; 28 for(i=0;i<n;++i) 29 printf("%4d",array[i]); 30 printf("\n"); 31 } 32 //滚动数组 33 void move(int array[],int n,int offset) 34 { 35 int *p,*arr_end; 36 arr_end=array+n; //数组最后一个元素的下一个位置 37 int last; 38 39 //滚动直到偏移量为0 40 while(offset) 41 { 42 last=*(arr_end-1); 43 for(p=arr_end-1;p!=array;--p) //向右滚动一位 44 *p=*(p-1); 45 *array=last; 46 --offset; 47 } 48 }
感谢你的阅读,请用心感悟!但愿能够帮到爱学习的你!!分享也是一种快乐!!!请接力。。。spa
点击查看原文,谢谢!code