```#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