就是n个整数,是前面各数顺序向后移动m个位置,最后m个数变成前面m个数
pta有这个题目,就是实现对数组进行循环左移
//逆转法
//分别先对前半部分和后半部分进行逆转,然后再对整个数组进行逆转,刚好可以达到循环左移的效果。
//以上顺序可以任意调换
#include<stdio.h>
void reverse(int arr[],int start,int end){
while(start<end){
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
start++;
end--;
}
}
int main(){
int size,movements;
scanf("%d%d",&size,&movements);
movements=movements%size;
int arr[size];
for(int i=0;i<size;i++)
scanf("%d",&arr[i]);
reverse(arr,0,movements-1);
reverse(arr,movements,size-1);
reverse(arr,0,size-1);
for(int i=0;i<size;i++){
printf("%d",arr[i]);
if(i<size-1)
printf(" ");
}
return 0;
}
输入:
8 3
1 2 3 4 5 6 7 8
输出:
4 5 6 7 8 1 2 3
xxx函数的第一个数组参数少了右边中括号,居然编译没报错?
第三行,avv后面多了一个 [
代码能运行?