C语言 PTA 方阵循环右移

问题遇到的现象和发生背景

img

img

遇到的现象和发生背景,请写出第一个错误信息

img

img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include <stdio.h>
int main()
{
    int m,n,i,j,J;

    scanf("%d%d\n",&m,&n);
    int a[n][n];
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            J=(m%n+j)%n;
            a[i][J]=a[i][j];
        }
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

我的思路是用数学公式表示平移的规律,我在草稿纸上写了很多次去验证我的公式“J=(m%n+j)%n”,都是可行的,就是运行时一大堆错误,搞不懂。
我发现题目好像也有问题,他说将第0列变为第n-m列,如果是这样的话,他测试的第一行的1就会到第一列,而不是样例输出中的第二列。 爪麻……

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

你这个肯定有问题,你复制过去了,但原来的数据存到哪里了?循环的话原来的数据都要存在,只是位置发生改变。所以你的代码是错误的。简单写的话,应该再开一个与原数组一样大的数组,然后计算位置,比原数据写入新数组位置中。