C 实战练习题目68

题目:有 n个整数,使其前面各数顺序向后移 m 个位置,最后m个数变成最前面的 m 个数。

程序分析:无。

实例:

 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 }

感谢你的阅读,请用心感悟!希望可以帮到爱学习的你!!分享也是一种快乐!!!请接力。。。

点击查看原文,谢谢!

posted @ 2020-07-11 15:00  C语言自学网  阅读(338)  评论(0编辑  收藏  举报