有一道c++题编程题,这个怎么写?

如题所述

比较简单的做法是,开辟另一个数组,用于存储循环后移的元素,把后面的数据前移后,再把移出的数据移回原数组。这种做法,是“以空间换时间”的做法,增加了空间的开销,时间复杂度为O(n)。
#include
using namespace std;
int main()
{ int m,n,i,j,t,a[100],b[100];
cout<<"一维数组元素个数:";
cin>>m;
cout<<"请输入"<<m<<"个数据:";
for(i=0; i<m; i++)
cin>>a[i];
cout<<"\n请输入要移动的次数:";
cin>>n;
for(i=0; i<m; i++)
b[i]=a[i];
for(j=0,i=n;i<m;)
a[j++]=a[i++];
for(i=0;j<m;)
a[j++]=b[i++];
cout<<"\n移动后的结果是:";
for(i=0;i<m;i++)
cout<<a[i]<<" ";
cout<<"\n";
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-16

按照题目要求编写的一维数组循环右移的C++程序如下

#include <iostream>

using namespace std;

int main()

{

 int i,j,temp,n,times;

 cout<<"一维数组元素个数:";

 cin>>n;

 cout<<"请输入"<<n<<"个数据:";

 int a[n];

 for(i=0;i<n;i++){

  cin>>a[i];

 }

 cout<<"请输入要移动的次数:";

 cin>>times;

 for(i=0;i<times;i++){

  temp=a[n-1];

  for(j=n-2;j>=0;j--){

   a[j+1]=a[j]; 

  }

  a[0]=temp;

 }

 cout<<"移动后的结果是:";

 for(i=0;i<n;i++){

  cout<<a[i]<<" ";

 }

 cout<<endl;

 return 0;


第2个回答  2019-09-17
代码资料:
#include <iostream>
using namespace std;//
#define N 6
int main(int argc,char *argv[]){
int n,i,j,k,a[N];
cout << "Please enter n(int n>=0)...\n";
if(!(cin >> n) || n<0){
cout << "Input error, exit...\n";
return 0;
}
for(i=0;i<N;a[i++]=i+1);
for(i=0;i<n;i++){
for(k=a[j=N-1];j>0;a[j--]=a[j-1]);
a[0]=k;
}
for(i=0;i<N;cout << a[i++] << ' ');
cout << endl;
return 0;
}
相似回答