数列整体向右移动,为什么会少移动一位


#include<stdio.h>
#include<string.h>
main()
{  int i,j,k,n,m;
   int a[50][50],b[50],c[50];
   scanf("%d%d",&m,&n);
   for(i=0;i<n;i++)
    for(j=0;j<n;j++)
     {scanf("%d",&a[i][j]);
      c[j]=j;
     }
    for(j=0;j<n;j++)  
     {  if(m%n+c[j]<n)
         c[j]+=m%n;
        else 
         c[j]+=m%n-n;
     }
    for(i=0;i<n;i++) 
     {for(j=0;j<n;j++)
       printf("%d ",a[i][c[j]]);
      printf("\n");
     }        
}

以下是测试数据:

2 3
1 2 3
4 5 6
7 8 9

8 5
11 71 24 69 12
39 52 39 59 47
45 24 53 67 10
79 55 25 79 65
12 29 89 89 90

每个元素值对应的索引位置虽然换了,但是你输出是按顺序输出的,所以移动不对。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632