0

我正在尝试使用循环将浮点值分配给二维数组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;

但似乎它不能正常工作,它没有按照我之前解释的那样做..

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

4

2 回答 2

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

改用:

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

%f转换规范 in的参数scanf必须是指向float. 您正在使用 type 的参数float

于 2012-10-29T19:37:04.110 回答
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'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]);
    }
}
于 2012-10-29T20:08:40.763 回答