0

forループを使用して float 値を 2 次元配列に代入しようとしています。それは次のように宣言されています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の変換指定の引数は、へscanfのポインタでなければなりませんfloat。タイプ の引数を使用していましたfloat

于 2012-10-29T19:37:04.110 に答える
1

最初に 3 つの問題があります。前述のとおり、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は入力したものに置き換えられます。配列全体を設定するには、x<=3(列用)​​ とy<=6(行用) の 2 つの for ループが必要です。

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 に答える