#c语言#问题古风排版的问题

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

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

Input
输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

Output
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)
代码在自己电脑上面是正确的,提交到判题系统里面却没有输出结果,显示Runtime Error:Floating point exception。

问题相关代码,请勿粘贴截图

#include<stdio.h>
int main()
{
    int j=0,l,h,n;
    char a[1000],b[250][250],c;
    scanf("%d",&n);
    getchar();
    scanf("%c",&a[j]);
    while ( a[j]!='\n')  {
        h=j%n;
        l=250-j/n-1;
        b[h][l]=a[j];
        j++;
        scanf("%c",&a[j]);
    }
        for ( int i=0;i<n;i++ )  {
    for ( int j=l;j<250;j++ )  {
            printf("%c",b[i][j]);
        }
       printf("\n");
    }
    return 0;
}
运行结果及报错内容

img

我的解答思路和尝试过的方法

难道是前面的二维数不能传到一维数吗?
但测试过,可以输出

img

我想要达到的结果

如果输入的字符数超过250,并且n为1,即j/n>250,那么250-j/n-1就会是负数了,数组越界