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
这篇博客讨论了如何在不使用额外数组的情况下,通过循环移动元素将数组整体后移一位。文中给出了C++代码示例,演示了如何通过迭代将数组内的每个元素依次后移,并在最后将最后一个元素的值正确地赋予数组的第一个位置,从而实现空间优化的数组元素移动操作。



3万+

被折叠的 条评论
为什么被折叠?



