7-267 部分逆置
分数 10
作者 usx程序设计类课程组
单位 绍兴文理学院
输入n个整数,把第i到j之间的全部元素进行逆置(1 ≤ i < j ≤ n),输出逆置后的n个数。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。
每组测试数据首先输入n,i,j(含义如上描述),然后再输入n个整数。
输出格式:
对于每组测试数据,输出逆置后的n个整数。每两个数据之间留1个空格。
输入样例:
2
7 2 6 11 22 33 44 55 66 77
5 1 5 11 22 33 44 55
输出样例:
11 66 55 44 33 22 77
55 44 33 22 11
#include <stdio.h>
int main(){
int T,n,i,j; //T组数据,n个整数,第i到j之间的全部元素
scanf("%d",&T);
while(T!=0){
scanf("%d%d%d",&n,&i,&j);
int arr[n];
for(int q = 0;q<n;q++)
scanf("%d",&arr[q]);
for(int q = 0;q<i-1;q++) //开头
printf("%d ",arr[q]);
for(int q = j-1;q>=i-1;q--){ //逆置部分
if(j == n){ //从末尾开始逆置的情况
printf("%d",arr[q]);
if(q!=i-1)
printf(" ");
}else{ //从非末尾开始逆置
printf("%d ",arr[q]);
}
}
for(int q = j;q<n;q++){ //末尾
printf("%d",arr[q]);
if(q!=n-1)
printf(" ");
}
printf("\n");
memset(arr,0,n*sizeof(int)); //清空数组
T--;
}
return 0;
}