ANSI C - 二维数组

时间:2012-10-29 19:35:33

标签: c arrays ansi

我正在尝试使用for循环将浮点值设置为二维数组。这已被声明为float num[4][7];

到目前为止,这是我的代码:

float num[4][7];
int x;
for(x=0;x<=3;x++) {
    printf("Enter number: %d",x);
    scanf("%f",cad[x][x]);
}
return 0;

但似乎它没有正常工作,它没有做我之前解释的......

任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:4)

scanf("%f",cad[x][x]);

改为使用:

scanf("%f", &cad[x][x]);

%fscanf转换规范的参数必须是指向float的指针。您使用的是float类型的参数。

答案 1 :(得分:1)

首先,如前所述,有三个问题,当使用scanf()时,你需要指出它将要更新的内容:

         //    v-----added that
    scanf("%f",&cad[x][x]);

其次,初始化一个名为“num”的数组,但是填充一个名为“cad”的数组。因此,改变其中一个,名称必须匹配。

最后,你的循环只会填充总共28个元素中的4个:

//This
float num[4][7];
for(x=0;x<=3;x++) {
  scanf("%f",&num[x][x]);

//Will give you:
[%f][  ][  ][  ]
[  ][%f][  ][  ]
[  ][  ][%f][  ]
[  ][  ][  ][%f]
[  ][  ][  ][  ]
[  ][  ][  ][  ]
[  ][  ][  ][  ]

显然在这个例子中,%f被你输入的内容所取代。要填充整个数组,你需要有两个for循环,x<=3(对于列)和{{1 (对于行)

y<=6