关于#c语言#的问题,请各位专家解答!




```#include <stdio.h>
int main() 
{
  int i,j,n,shulie[n][n];
  scanf("%d",&n);
  for(i=1;i<=n;i++)
  for(j=0;j<i;j++)
  scanf("%d",&shulie[i][j]);
  printf("%d\n",shulie[1][0]);} 

请问一下 ,如果我让你,等于3,那第一个数组应该是三行三列 ,但我们只给几个赋值,没赋值的为0,那为什么第一个元素怕[1][0],就变成4了??像如下输入
3
1
2
3
4
5
6 
输出 
4
这是为什么?

数组长度必须是常量。

第一 没赋值不代表为零,除非初始化。
第二 数组长度是个常量好吗?
修改后如下

#include <stdio.h>
int main() 
{
  int i,j,n,shulie[10][10]={};
  scanf("%d",&n);
  for(i=1;i<=n;i++)
  for(j=0;j<i;j++)
  scanf("%d",&shulie[i][j]);
  printf("%d\n",shulie[1][0]);} 

如有帮助,点个采纳吧

你的二维数组定义错了,n的值事先不确定。
如果你的编译支持C99的变长数组,你需要把数组定义在scanf()之后,并且如果你想没有输入的元素为零的话, 你还得先初始化整个数组为0
另外第一层循环i的值应该从0开始,循环条件是i<n