1
double low = 0 , high = 0.0,n = 0.0;
----
printf("Enter the integral limits (low high): ");
scanf("%lf %lf", &low, &high);

printf("%lf%lf",low,high);
printf("Enter the number of subinternals (n): ");
scanf("%lf",&n);

このプログラムをテストすると(

    printf("%lf%lf",low,high);) (6th line)

低値と高値で 0.000000 と 0.000000 の値を取得します。プログラムの最初にそれらを初期化しましたが、今はそれらの値を入力しようとしています。

私は何を間違っていますか?

{PS Windows 7 ラップトップを使用しています。「%f」を「%lf」に変更して「%f」に戻すことはすでに試みました)

私は何をすべきか?(助けてください!)

編集:何が起こったのかわかりません。私はエラーをチェックしました

        if (2 != scanf("%lf %lf", &low, &high))
               printf("scanf failed!\n")

代わりに起こったのは、「..(low high):」の後に 1 と 2 を入力した後、プログラムは次の入力を待っていて、もう一度 1 と 2 を入力したところ、今度は正しい結果が得られました。プリント...何が起こったのかわからない?

出力画面: http ://s1288.photobucket.com/user/Kdragonflys/media/ss_zps6b85396e.png.html

4

2 に答える 2

2

%lffordoubleとが必要です。また、読み取るscanfが 2 つある場合は、これらのうちの 2 つも必要です。double

だから変更:

scanf("%f", &low, &high);

に:

scanf("%lf %lf", &low, &high);

また、次のように変更します。

scanf("%f",&n);

に:

scanf("%lf",&n);

注: エラー チェックは常に良い考えscanfです。正常に処理された値の数を返します。したがって、最初のscanf呼び出しが次のように機能しているかどうかを確認できます。

if (scanf("%lf %lf", &low, &high) != 2)
    printf("scanf failed!\n");
于 2013-10-25T16:06:14.497 に答える
0

これを試して、

double low = 0.0 , high = 0.0,n = 0.0;
----
printf("Enter the integral limits (low high): ");
scanf("%lf %lf", &low, &high);

printf("%lf %lf",low,high);
printf("Enter the number of subinternals (n): ");
scanf("%lf",&n);
于 2013-10-25T16:10:50.250 に答える