有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。(指针)

/*         
* Copyright (c) 2012, 烟台大学计算机学院         
* All rights reserved.         
* 作 者:  刘同宾       
* 完成日期:2012 年 12 月 04 日         
* 版 本 号:v1.0  
*               
* 输入描述:    
* 问题描述:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。(指针)
*           写一函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个数! 
* 程序输出:
* 问题分析:略        
* 算法设计:略         
*/


#include<iostream>

using namespace std;

int main()
{
	void move(int *array,int n,int m);  //函数声明

	int number[20];   //定义数组长度为20的数组

	int i,n,m;      

	cout<<"请输入要输入多少个数:"<<endl;

	cin>>n;

	cout<<endl<<"请输入"<<n<<"个整数:"<<endl;

	for(i=0;i<n;i++)
	{
		cin>>number[i];
	}

	cout<<endl<<"请输入要后移多少位置:"<<endl;

	cin>>m;

	move(number,n,m);   //函数调用

	cout<<endl<<"后移后的排序为:"<<endl;

	for(i=0;i<n;i++)  //输出元素
	{
		cout<<number[i]<<"  ";   
	}

	cout<<endl;

	return 0;
}




//这是使循环后移一次,通过m调节后移几次

void move(int *array,int n,int m) //使循环后移一次的函数 
{
	int *p,array_end;        //定义一个指针变量p,和一个变量array_end

	array_end=*(array+n-1);  //将array中的最后一个元素的值赋给array_end  

	for(p=array+n-1;p>array;p--)  //从数组最后一个元素开始向前  把前一个元素的值赋给后一个元素  
	{
		*p=*(p-1);       
	}

	*array=array_end;    //将array_end的值赋给第一个元素的值  因为之前将最后一个元素的值赋给了array_end

	m--;    // 通过m控制此函数执行几次  从而后移几个数

	if(m>0)
	{
		move(array,n,m);  //递归调用,当循环次数m减至为0时,停止调用
	}


}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值