hjwdashuaibi 2023-03-20 18:49 采纳率: 47.4%
浏览 25
已结题

这段C语言的代码为啥错了

就是n个整数,是前面各数顺序向后移动m个位置,最后m个数变成前面m个数

img


编译的时候没犯错,但是运行的时候在移动 的那一步就运行不了了,为啥

  • 写回答

4条回答 默认 最新

  • oldmao_2000 领域专家: 人工智能技术领域 2023-03-20 19:02
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 3月20日