C语言,各位请问为什么会这样

我是小白,有输出结果但运行错误了

img

img

数组越界了,数组下标从0开始
int f[3][4]这么声明的时候,数组元素从f[0][0]到f[2][3]
你for循环里i和j都大于这个值了
代码修改如下:

#include <stdio.h>
#include <stdlib.h>
char *mystrcpy(char *t);
int main()
{
    int f[3][4],i,j;
    for (i=0;i<3;i++)
    {
        for (j=0;j<4;j++)
        {
            scanf("%d",&f[i][j]);
        }
    }
    for (j=0;j<4;j++)
    {
        for (i=2;i>=0;i--)
        {
            if(i>0)
                printf("%d ",f[i][j]);
            else
                printf("%d\n",f[i][j]);
        }

    }
    return 0;
}

数组越界了,i不能等于3,i<3;j不能等于4,j<4;
i(0,1,2),j(0,1,2,3)