有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数

用指针

第1个回答  2013-11-17
你好!

hky_bd2010 帮你写的是C++的,而你是要用 C 的,更换头文件和相应的函数吧本回答被网友采纳
第2个回答  2013-11-17
#include<iostream>
using namespace std;
int main()
{
  void move(int*,int,int);
  int number[20],n,m,i;
  cout<<"请输入共有几个元素";
  cin>>n;
  cout<<"输入"<<n<<"个数"<<endl;
  for(i=0;i<n;i++)
 cin>>number[i];
  cout<<"请输入向后移多少个位置";
  cin>>m;
  move(number,n,m);
  cout<<"移动的元素是:"<<endl;
  for(i=0;i<n;i++)
   cout<<number[i]<<" ";
  cout<<endl;
  
  return 0;
}
void move(int *array,int n,int m)
{
int *p,array_end;
array_end=*(array+n-1);//把最后一个元素赋给array_end
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;//把最后一个元素给第1个元素
   m--;
   if (m>0) 
  move(array,n,m);//递归调用,当循环次数m减至为0时,停止调用
  
}

追问

可以改一下吗 ,win-tc打不开iostream

追答

我手头上没有TC,但算法是通用的。

相似回答