大一新生devc++数组节小实验,为什么只有矩阵首尾是1而不是对角线全是1

`
#include<stdio.h>
int main()
{
    int i,k,n;int b[i][k];
    printf("输入阶数n:\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(k=0;k<n;k++)
        {
            if (i==k)
            b[i][k]=1;
            else
            b[i][k]=0;    
        }
    }
    for(i=0;i<n;i++)
    {
        for(k=0;k<n;k++)
        {
            printf("%d",b[i][k]);
        }
        printf("\n");
    }
}````


```

i,k还未初始化,不能用来定义数组。

用代码段贴一下吧 你代码都让和谐了

虽然没看懂你贴的代码,但是我大概明白了你想要的结果,生成一个n 阶矩阵,主对角线上都是1 ,这样的矩阵叫单位矩阵,可以这样实现

#include<stdio.h>

int main(){
    
    int n;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(i==j){
                    printf("1");
                }else{
                    printf("0");
                }
                if(j<n-1){
                    printf(" ");
                }
            }
            printf("\n");
        }
        printf("\n");
    }
    return 0;
    
}

运行效果

img