題目:有 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