N个整数存放在数组中,将每个元素依次后移一个位置,最后一个元素移动到第一个元素的位置。输入一个整数n(n不超过100)和n个整数,相邻数值之间用一个空格分隔。输出移动以后的结果。
对于数组元素的移动,最直接方法就是把数组中最后一个数移到第一个,再用另一个数组储存实现移动。这种方法虽然简单,但很浪费空间。其实可以在之前方法的基础上改进,只用一个数组。
将a[n]赋值给a[n+1],a[n-1]赋值给a[n]......以此类推,最后将a[1]赋值给a[2],这样原来的数组都整体往后移了一位。但这使得a[1]和a[2]都是一样的值了,要把a[n+1]的值赋值给a[1]就OK了(注意"a[1]=a[n+1]; "这句话要写在循环外,只执行一次)。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[110],n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=n;i>=1;i--){ //从后往前
a[i+1]=a[i];
}
a[1]=a[n+1];
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
运行结果:
输入
10
1 2 3 4 5 6 7 8 9 10
输出
10 1 2 3 4 5 6 7 8 9