1
#include <stdio.h>
#include <math.h>


int main (void)
{
    float inches;
    printf("Enter the number of inches\n");
    scanf("%f\n",&inches);


    float feet;
    float cm;
    float yards;
    float meter;

    feet = 12 * inches;
    cm = 2.54 * inches;
    yards = 36 * inches;
    meter = 39.37 * inches;

    printf("Amount in feet: %f\n", &feet);
    printf("Amount in cm:   %f\n", &cm);
    printf("Amount in yards: %f\n", &yards);
    printf("Amount in meters: %f\n", &meter);




   getchar();

   return 0;

}

Dev c++を使用しています

問題は私がCで取り組んでいる問題です。基本的にはインチで数値を入力してから、cm、ヤード、メートル、フィートで金額を出力します。これにより、0.0000またはそれらすべてに対して、または実際に稼働している時間が得られます。画面を維持できず、それが getchar() の目的だと思っていましたが、間違っていたに違いありません。どんな助けも素晴らしいです。ありがとう!

編集1

ものを入れた後に閉じるのではなく、dev c++ を画面に表示し続ける限りはどうですか? 画面がポップアップしたときに何かに戻る前に、2つの値を入力する必要がありますか? どうして??

4

4 に答える 4

1

フロートのアドレスをフロートとして出力しようとしていますが、これを言いたいだけです:

printf("Amount in feet: %f\n", feet);

に address( &) 演算子がないことに注意してくださいfeet。他の通話にも同様の変更を適用したいと考えていますprintf

于 2011-07-02T22:41:02.863 に答える
1

2 つの問題:

  1. を使用する際の通常の問題はscanf()、番号の後に改行が読み取られずに残り、次の読み取り操作 (getchar()ここ) がそれを読み取ることです。
  2. へのポインターでprintf()はなく、実際の値を渡す必要があります。
于 2011-07-02T22:42:35.573 に答える
0

I can't keep the screen upについては、IDE、特に Dev-C++ から直接グラフィカル環境でコンソール プログラムを実行しようとするすべての人に共通の問題です。問題は、I/O 用のコンソールがなく、プログラムが実行されている間だけ提供されることです。プログラムは高速であるため、最後の入力と出力の後に一時停止を追加しないと、出力を読む時間があります。

多くの MS Windows Dev-C++ ユーザーは恐ろしいsystem("pause"). Dev-C++ が「プログラム終了後もコンソールを開いたままにする」オプションを使用して I/O 用のコンソールを提供できない場合は、シェル (Windows では cmd または powershell) を開いて、そこから直接プログラムを実行します。

入力の問題については、不運にも scanf-ing にはいくつかのバッファリングの問題があります。これは、指定された形式で認識されない入力が破棄されず、次の読み取りの準備ができているためです。例えば

scanf("%f", &aFloat);
scanf("%f", &theNextFloat); // in your case you have the extra getchar();

は、次の scanf で既に利用可能であるため1.25 4.5、最初の入力として書き込む場合、2 番目の scanf で停止しません。4.5あなたの場合、バッファに残っていたのは改行であり、getchar がそれを見つけたので、入力を待つ必要はありません。代わりに a を使用することもできます while( getchar() != EOF ) ;。終了するには、Ctrl-D を押す必要があります。

于 2011-07-03T09:21:40.990 に答える
0

では、値printfのアドレスを指定するのではなく、float値を指定するだけです。&呼び出しから を削除しprintfます。

scanf関数は渡された変数を変更するため、アドレスが必要ですが、printf必要なのは値だけです。そのままでは、printf本質的にポインターを浮動小数点数として再解釈しているため、ガベージ値が表示されます。

于 2011-07-02T22:41:44.620 に答える