标题
数列折半交换
问题描述
对一个整数数列进行折半交换:
如果该数列有奇数个元素,则数列的中间元素不动,左半 边的元素整体移到右边,右半边的元素整体移到左边;如果该数列有偶数个元素,左、右 半边元素交换。
输入说明
输入数据分为两行。
第一行包含了一个整数n,表示数列元素数,1 ≤ n ≤ 30。 第二行是整数数列的n个元素,元素之间用空格隔开。
输出说明
输出折半交换后的整数序列。
输入样例1
5
1 2 1 4 3
输出样例1
4 3 1 1 2
输入样例2
4
5 7 6 8
输出样例2
6 8 5 7
cpp
#include<stdio.h>
#include<math.h>
int main(){
int n,i,j,temp=0;
scanf("%d",&n);
int a[n];
if(n>=1&&n<=30){
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
if(n%2!=0){
int t=i/2;
for(j=0;j<t;j++){
int temp=a[j];
a[j]=a[j+t+1];
a[j+t+1]=temp;
temp=0;
}
}
else if(n%2==0){
int p=n/2;
for(j=0;j<p;j++){
int temp=a[j];
a[j]=a[j+p];
a[j+p]=temp;
temp=0;
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
}
return 0;
}