0

導関数を使って何かを行う単純な C プログラムを作成しようとしましたが、それは問題のポイントではありません: プログラムを実行すると、浮動小数点値の束を入力するように求められますが、何を入力しても問題ありません。 scanf 関数は常に変数に「ジャンク」値を割り当てます。コードは次のとおりです。

double a, b, c, d, x, h;
printf("Please enter the coefficient of X cubed: ");
scanf("%3f", &a);
printf("\nPlease enter the coefficient of X squared: ");
scanf("%3f", &b);
printf("\nPlease enter the coefficient of X: ");
scanf("%3f", &c);
printf("\nPlease enter the free coefficient: ");
scanf("%3f", &d);
printf("\nPlease enter x: ");
scanf("%3f", &x);
printf("\nPlease enter the offset: ");
scanf("%3f", &h);

printf("%.3f %.3f %.3f %.3f %.3f %.3f", a,b,c,d,x,h);

a、b、c、d、x、h の値を入力しましたが、printf 関数は、入力した値とはまったく異なる、非常に奇妙な値を示します。

考えられるあらゆる方法でグーグルで検索しましたが、それが発生する理由を見つけることができないようです。

誰かがなぜそれが起こるのかを理解しようとすることができますか?

4

2 に答える 2

4

lf値の読み取りを指定する変換指定子ではdoubleなく、変換指定子を使用して値fを読み取りfloatます。関数はその点で対称的ではありませんfscanffprintf

于 2012-07-23T22:28:06.677 に答える
0

%lfではなく、 orを使用%gして double を抽出する必要があり%fます。

于 2012-07-23T22:29:19.717 に答える