为什么这个二维数组打印出来会出现各个元素呈一排的情况,

#include<stdio.h>

int main()
{
    int a[4][5]={
        {1,2,3,4,5},
        {6,7,8,9,10},
        {11,12,13,14,15},
        {16,17,18,19,20}};
        int i,j;
        
        for(i=0;i<4;i++)
        {
            for(j=0;j<5;j++)
            {
                printf("%2d ",a[i][j]);
            }
        }
        putchar('\n');
    return 0;
}

换行符放到外层for循环里面就OK了,如下


#include<stdio.h>
 
int main()
{
    int a[4][5]={
        {1,2,3,4,5},
        {6,7,8,9,10},
        {11,12,13,14,15},
        {16,17,18,19,20}};
        int i,j;
        
        for(i=0;i<4;i++)
        {
            for(j=0;j<5;j++)
            {
                printf("%2d\t ",a[i][j]);  //加上\t,一排元素之间加空格,方便查看
            }
        putchar('\n');    
        }
    return 0;
}
 
#include<stdio.h>
 
int main()
{
    int a[4][5]={
        {1,2,3,4,5},
        {6,7,8,9,10},
        {11,12,13,14,15},
        {16,17,18,19,20}};
        int i,j;
        
        for(i=0;i<4;i++)
        {
            for(j=0;j<5;j++)
            {
                printf("%2d ",a[i][j]);
            }
            putchar('\n');
        }
    return 0;
}

换行的位置不对,应该是内层for循环后接换行