C语言循环右移出问题

#include<stdio.h>
#include<math.h>
int arrayShiftRight(int s[],int x,int y)
{int t[x],k,l;
    for(int i=0;i<x;i++){
    t[i]=s[i];}
    for(int q=0;q<x;q++){
        k=x-y;
    if(q>=y)
    s[q]=t[q-y];
    else
    s[q]=t[q+k];} }
int main(){
    int i,n,m;
    scanf("%d %d",&n,&m);
    int arr[n];
    for(i=0;i<n;i++)
    scanf("%d",&arr[i]);
    arrayShiftRight(arr,n,m);
    for(i=0;i<n;i++)
    printf("%d ",arr[i]);
    return 0;}

数据会乱  而且当输入的时要排4个数,位移为6时候,会乱 在学校oj上的排8个右移3也时错的;

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。