プロが教えるわが家の防犯対策術!

半径rをキーボードから入力し、円の面積sを求めるCプログラムを作成する課題なのですが、面積の値がおかしくなります。
#include <stdio.h>
int main(void)
{
double r;
double s;
printf("円の半径を入力してください:");
scanf("%lf",&r);
s=r*r*3.14;
printf("円の面積=%lf",r,s);
return(0);
}
ちなみにこの課題は空欄を埋めるものです。空欄を埋めてみて実行しても値がおかしくなってしまいます。
なお、半径は整数値、面積は小数点以下も有効とし、円周率は3.14を用いるものとする。

質問者からの補足コメント

  • なるほど、それ以外の箇所は問題ありませんか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/10/18 13:58
  • となると、printf("円の面積=%lf",s);の
    %lfの部分も%dにしなきゃダメですよね?

    No.4の回答に寄せられた補足コメントです。 補足日時:2020/10/18 15:31
  • ifはまだ習ってないので違いかもですね。
    習ったらやってみます!

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/10/18 19:06

A 回答 (7件)

No4です。


>となると、printf("円の面積=%lf",s);の
>%lfの部分も%dにしなきゃダメですよね?
いいえ、その必要はありません。
%d はint型のデータを処理する場合に使います。
%lfはdouble型のデータを処理する場合に使います。
sはdouble型なので、%lfのままで問題ありません。
もし、半径を出力するならrはint型なので
printf("円の半径=%d",r);
とします。
    • good
    • 0

if文って初歩中の初歩なんだが、高校生?


つか、見てる感覚で話すと
この問題に対して、貴方の知り得る知識では不可能だと思うんだが先生プログラム素人?
    • good
    • 0

「となると、printf("円の面積=%lf",s);の


%lfの部分も%dにしなきゃダメですよね?」
と思ったのはなぜ?
    • good
    • 0

No1です。


>なるほど、それ以外の箇所は問題ありませんか?

No2の方のいうとおり、半径が整数で入力されるなら、
rをint 型にしたほうが良いでね。
(実際の動作としては、整数でしか入力されないので、どちらでも問題ありませんが、課題の性質上、先生はint型を正解にすると想像できます)

int r;
scanf("%d",&r);
ですね。
この回答への補足あり
    • good
    • 0

もしくはif使って整数値以外弾くとか?

この回答への補足あり
    • good
    • 0

半径は整数値っつってんならdouble rだめじゃん


int rにせんと

だけどそれじゃ計算する時に良くないからキャストしないとね
    • good
    • 1

こちらで試してはいませんが


printf("円の面積=%lf",r,s);を
printf("円の面積=%lf",s);
に変えてはいかがでしょうか。いまの状態だと、rの値が表示されるかと。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!