5.21 C语言练习(自定义函数之数字后移:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。)

【练习】

题目要求:
	有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。
	写一函数:实现以上功能,在主函数中输入n个数。
	
	例如:
	输入:
	输入数据的个数n
	n个整数
	移动的位置m
	输出:
	移动后的n个数

	例如:
	输入:
	10
	1 2 3 4 5 6 7 8 9 10
	2
	输出:
	9 10 1 2 3 4 5 6 7 8 

分析:
如何表示要后移的数,
首先,n-m开始取到n为止
其次,从最初取到n-m为止
合起来也就是输出后移的数字串
关键在于将最初的位置(首地址)把握好

#include
#include

int main()
{
	
//	函数声明
 
	void backward(int *q,int *h,int x,int y);

//	定义
 
	int m,n,i;
    int *p,*head;

//	输入数据的个数n

    scanf("%d",&n);

//	开辟空间存n个数,并保留下首地址
  
    head=p=(int *)malloc(sizeof(int)*n); 
  
//	循环键入
  
    for(i=0;i<n;i++)  
    {
        scanf("%d",p++);
    }

//	输入移动的位置m  

    scanf("%d",&m);
    
//	调用后移函数 
 
	backward(p,head,n,m);
	
    return 0; 
 } 
 
 void backward(int *q,int *h,int x,int y)
 {
 	
//	将要后移的y个数先输出
 
 	for(q=h+x-y;q<h+n;q++)   
    {
        printf("%d ",*q);
    }

//	从头开始输出剩余数 
 
    for(q=h;q<h+x-y;q++) 
    {
        printf("%d ",*q);
    }
 }

5.21 C语言练习(自定义函数之数字后移:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。)_第1张图片

你可能感兴趣的:(5.21 C语言练习(自定义函数之数字后移:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。))