我正在尝试使用循环将浮点值分配给二维数组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;
但似乎它不能正常工作,它没有按照我之前解释的那样做..
任何帮助将不胜感激,谢谢!
scanf("%f",cad[x][x]);
改用:
scanf("%f", &cad[x][x]);
%f
转换规范 in的参数scanf
必须是指向float
. 您正在使用 type 的参数float
。
三个问题,首先,如前所述,在使用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
's 被您输入的任何内容替换。要填充整个数组,您需要有两个 for 循环,x<=3
(用于列)和y<=6
(用于行)
float num[4][7];
int x;
int y;
for(x=0;x<=3;x++) {
for(y=0; y<=6; y++) {
printf("Enter number: [%d][%d]",x,y);
scanf("%f",num[x][y]);
}
}