这个错误只出现在第一行的最后一个数字,调试了但也不知道问题在哪,请大家看一下吧(大一新生太不容易了)
谢谢大家
把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;
}