C 实战练习题目68

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

相关文章
相关标签/搜索