C言語では、配列の添字は0から始まり、宣言時には最大の添字ではなく要素数を指定します。
今回の場合、配列 b は float[2] 型の要素を1個しか持たない配列として宣言されているので、
b[1] は確保されておらず、範囲外となります。
したがって、
コード:
scanf("%f",&b[1][0]);
は、値の読み込みに成功した場合、範囲外への書き込みが発生し、周りのデータが破壊される原因となります。
質問文で言及されている b[0][1] へのアクセスがコード内に見当たらないので、この行を
コード:
scanf("%f",&b[0][1]);
とするべきであると予測できます。
他の修正方法としては、
・範囲外へのアクセスにならないよう、配列 b に十分な要素数を確保する
すなわち、変数宣言で b[1][2] のかわりに b[2][2] などとする。
・配列 b に保存した値は使われていないようなので、読み込んだ値を書き込むのをやめる
すなわち、 scanf("%f",&b[1][0]); のかわりに scanf("%*f"); とする。
などが考えられます。