有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时,停止调用}}

原创粉丝点击