有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。(指针)
来源:互联网 发布:水雷的点云数据 编辑:程序博客网 时间:2024/05/18 08:29
/* * 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_endarray_end=*(array+n-1); //将array中的最后一个元素的值赋给array_end for(p=array+n-1;p>array;p--) //从数组最后一个元素开始向前 把前一个元素的值赋给后一个元素 {*p=*(p-1); }*array=array_end; //将array_end的值赋给第一个元素的值 因为之前将最后一个元素的值赋给了array_endm--; // 通过m控制此函数执行几次 从而后移几个数if(m>0){move(array,n,m); //递归调用,当循环次数m减至为0时,停止调用}}