输出值为什么随输出语句格式改变了

img

这里是题目,不过和我的问题关系不大

#include <stdio.h>
int main()
{
    int A[20][20];
    int n,sum,i,j;
    scanf("%d",&n);
    for(i=0;i<=n;i++)
    {
        for(j=0;j<=n;j++);
        {
            scanf("%d",&A[i][j]);
        }    
        getchar();
     } 
    printf("%d",A[0][0]);
    return 0;
}


img

这时候输出的是这个很怪的数


#include <stdio.h>
int main()
{
    int A[20][20];
    int n,sum,i,j;
    scanf("%d",&n);
    for(i=0;i<=n;i++)
    {
        for(j=0;j<=n;j++);
        {
            scanf("%d",&A[i][j]);
        }    
        getchar();
     } 
    for(i=0;i<=n;i++)
    {
        for(j=0;j<=n;j++);
        {
            printf("%d ",A[i][j]);
        }
     } 
    
    return 0;
}

改成循环输出之后就是这个了

img

并且为什么赋值和输出的时候都只有三个数字,我想让他输入四个数字怎么办

    for(j=0;j<=n;j++);

第9行for后面多了分号
后面代码第10、18行一样
另外输入n,表示数组实际大小,for循环应该是 for(i=0;i<n;i++),不应该等于n,这样等于是n+1个元素了

你的代码问题是因为,第一段代码中,第9行的for循环后面多了一个分号。第二段代码中,第10行的for循环后面多了一个分号。

n=2的时候,
for( i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
scanf("%d",&A[i][j]);
}
双层for循环共读取9个数。
把你循环中的getchar()删掉,完全没有用的