• ベストアンサー

初めてのC言語 

半径rで円周をだすプログラムを作りたいのですが作ってみたところ答えが0.00しかでてきません。 どこが間違っているのでしょうか。 #include <stdio.h> #define PI 3.14159265358979 /* 円周率 */ int main(void) { double r,a; printf("r="); scanf("%lf",&r); a=r*2*PI; printf("r*2*PI=%5.2lf\n",a); return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

printf で double の値を表示するとき, むかしは %f を使ってた (%lf は NG) んだね. だから, 「ちょ~古い」処理系だと変なことになるかもしれん. ただ, scanf とのからみでいろいろあって, 今では %lf でも OK になってる.

bitamin123456
質問者

お礼

lfをfに変えたらできるようになりました! 指定されたソフトが古かったみたいてす。 皆さんありがとうございました!!

その他の回答 (4)

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.4

>fとlfの違いってなんなのでしょうか。 l(える)は倍長整数を表します。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

プログラムには問題無いはずですが。 例えば printf("r="); scanf("%lf",&r); を r=100.0 ; にしたら、正しい値になるのかどうか printf("r=%5.2lf\n",r); printf("r*2*PI=%5.2lf\n",a); としてみて、rに正しい値が入っているかどうか 等、どこで変になっているかを確認してはどうでしょうか?

bitamin123456
質問者

補足

すぐの回答ありがとうございます! 今いろいろ試してみました。 ちゃんと計算されてる!と思ったら scanfのほうでは%lfで 最後のprintfでは%5.2f となっていてlが抜けていました。 試料にはdoubleを使うときは%lfを使えと 書いてあったんですが 見本ではlfでも計算できていました。 なぜなのでしょうか。fとlfの違いってなんなのでしょうか。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

いや、ソースはあってます。 この、最新状態でコンパイルしていますか? ソースを上書きしてない。とか、コンパイルのファイル名が違うとか、ないですか? それと、 #include<math.h> を入れておくと、 #define M_PI 3.14159265358979323846 が入ってるので、定義せずに、M_PI で使えます。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

intmain(void)  はint main(void) return0;    はreturn 0; 以上でコンパイルしたら半径100で628.32と出ましたよ。

bitamin123456
質問者

補足

それでもrをいくつにしても0になってしまいます。 違うところに原因があるのでしょうか。 いろいろ変えたり調べてみましたがちゃんと作動してくれません。

関連するQ&A