/*
* 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时,停止调用
}
}
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。(指针)
最新推荐文章于 2024-09-30 20:14:01 发布