c语言中关于二维数组的问题

题目要求输出如下内容

img

我的思路是,利用如下代码,先将上图中内容输入到5*5的二维数组中,再输出出来

img

但是输出的时候就变成下面这样了

img

我的代码如下

#include<stdio.h>
main()
{
    int a[5][5],x,i=0;
    for(x=0;x<=4;x++)
    {
        a[x][i]=a[x][4-i]=1;
        i++;
    }
    for (x=0; x<=4; x++)
    {
        for (i=0; i<=4; i++)
        {
            printf("%d", a[x][i]);
        }
        printf("\n");
    }
}


#include<stdio.h>
main()
{
    int a[5][5],x,i=0;
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            a[i][j]=0;
        }
    }
    for(x=0;x<=4;x++)
    {
        a[x][i]=a[x][4-i]=1;
        i++;
    }
    for (x=0; x<=4; x++)
    {
        for (i=0; i<=4; i++)
        {
            printf("%d", a[x][i]);
        }
        printf("\n");
    }
}
 

整体的思路没问题,但是a数组没有进行初始化,里面存的值可能就比较奇怪。


#include<stdio.h>
int main()
{
    int a[5][5]={0};
    int i=0;
    for(int x=0;x<5;x++)
    {
        a[x][i]=1;
        a[x][4-i]=1;
        i++;
    }
    
    for (int x=0; x<=4; x++)
    {
        for (int i=0; i<=4; i++)
        {
            printf("%d", a[x][i]);
        }
        printf("\n");
    }
    
    return 0;
}
 

img