Problem V: 零起点学算法92——元素前移1位
Description
将数组所有元素前移一位(最前面的元素移到最后)然后输出移动后的数组
Input
多组测试数据,每组 第一行输入一个整数n(不大于20) 第二行输入n个整数
Output
输出前移一位后的数组
Sample Input
4
1 2 3 4
Sample Output
2 3 4 1
#include<stdio.h>
int main()
{
int n,a[20],b[20];
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<n;i++)
{
b[i-1]=a[i];
}
b[n-1]=a[0];
for(int i=0;i<n-1;i++)
{
printf("%d ",b[i]);
}
printf("%d\n",b[n-1]);
}
return 0;
}
另一种写法
#include<stdio.h>
int main()
{
int n,a[20],i,k;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++)
scanf("%d",&a[i]);
k=a[0];
for(i=0;i<n-1;i++){
a[i]=a[i+1];
}
a[n-1]=k;
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
}
return 0;
}
总结
1、将一个元素后置和其他元素前移分开。
2、使用辅助数组更加容易思考。