C语言左上角调试了也没发现问题系列

这个错误只出现在第一行的最后一个数字,调试了但也不知道问题在哪,请大家看一下吧(大一新生太不容易了)
谢谢大家

img

 

 

img


大家看下这是为啥呀(第一行那个4应该是3)

把int arr[n-1][n-1]改为arr[n][n]再试试

探讨一下哦,我觉得384行的数组不要n-1,直接就是n。因为这里是长度,你这样写会少一个的。就是说你现在想要3X3,其实它的容量是2X2。还有383行 scanf()应该没必要加换行。然后那个输入赋值其实也可以直接用两个for循环嵌套去完成的。后面的输出没怎么看。因为我觉得哦,如果输入没对,建立在一个错误的基础上去找别的错误是不行的。其实最简单最直接的调试方法就是把你输入完之后,把数组全部打印出来看看。这是我一点浅见啊,探讨一下一起学习,有错误请当我放屁。

应该是因为数组定义时,定义的行列错了,比如n输入3,arr[n-1][n-1]就是arr[2][2], 和预期的arr[3][3]不符,改为int arr[n][n]即可;

另外打印左上角元素时第二个for循环的结束条件需要修改下,修改如下:


#include <stdio.h>
#include <stdio.h>

int main(void){
    
    int n,i,a;
    a=0;
    scanf("%d\n",&n);
    int arr[n][n];
    while(a<=n-1){
        for(i=0;i<=n-1;i++){
            scanf("%d",&arr[a][i]);
        }
        a++;
    }
    
    for(a=0;a<=n-1;a++){
        for(i=0;i<n-a;i++){
            printf("%3d ",arr[a][i]);
        }
        printf("\n");
    }
    
    return 0;
} 

img