2017-09-10 4 views
0

の仲間のプログラマーを使用するまでCを実行しません。私はこの分野にはかなり新しいので、私は自分の問題を抱えているかもしれません。私はquitコマンド

円の面積と円周を見つけるプログラムを書くように言われました。 1つの条件として、出力を小数点以下5桁まで表示します。出力は次のようになります。

円の半径は________です。

円の直径は______です。

円の面積は__です。

周囲は____です。

ここに私はこの問題のために書いたコードです。

#include<stdio.h> 
    int main() 
    { 
     float r, area, circ, diam, pi = 3.14159; 

     printf("Enter the radius please"); 
     scanf("%f\n", &r); 

     printf("The radius of the circle is %0.5f\n", r); 

     diam = 2 * r; 
     printf("The diameter of the circle is %0.5f\n", diam); 

     area = pi * r * r; 
     printf("The area of the circle is %0.5f\n", area); 

     circ = 2 * pi * r; 
     printf("The circumference of the circle is %0.5f\n", circ); 

     return 0; 
    } 

コードが実行され、私はこれを示す端末

Enter the radius please4 

でIは、試験試料として4を置きました。これは、プログラムが動作しなくなったときです。私はqと入力し、Enterキーを押します。これは出力の残りの部分がそうであるように見えるときです。

The radius of the circle is 4.00000 
The diameter of the circle is 8.00000 
The area of the circle is 50.26544 
The circumference of the circle is 25.13272 
+0

あなたは4を入力した後に返すヒットしましたか?そうでない場合は、数字を入力し終わったかどうかをプログラムが知る方法はありません。 –

答えて

1

Najik、 はあなたがscanf関数で "\ n" を持ってしますか? 私はあなたがそれを削除する必要があるものと思う。後

scanf("%f\n", &r); 

::前

scanf("%f", &r); 

これは、scanf関数は、すぐに番号を入力し、Enterキーを押した後、終了することを確認しますが。

希望私はあなたを手伝ってくれました。

2

問題は、あなたのscanfフォーマット文字列である:

scanf("%f\n", &r); 

フォーマット文字列で\nを置くことによって、それはあなたが入力した任意の改行文字を消費し、改行ではない文字を待ちます。

書式指定子から\nを削除し、期待どおりに動作します:

scanf("%f", &r); 
+0

改行文字だけではありません。書式文字列内の空白(空白や改行など)は、入力内の空白をすべて消費します。 – melpomene

関連する問題