2009年6月20日土曜日

C言語講座 第2回 演算と型 [解答済]

お題:
①プログラム実行中に2つの”小数点を持った実数値”の入力を受け付け、その実数値の足し算、引き算、掛け算、割り算の計算結果を表示する。
②”1/7”の計算結果を小数点以下3桁まで計算して表示させる。
以上の①、②を実行するプログラムを作成せよ。

プログラム実行表示例

2つの”小数点を持った実数値”を入力してください。
x:(ここに入力)
y:(ここに入力)

x + y =
x – y =
x * y =
x / y =

1 / 7 =

必須文字列
・double
・scanf
・%l(エル)f
・%.3f

解答掲載までの期間は3日間です。それまでに各自プログラムを作成し、
・プログラム文
・プログラムをコンパイルした実行ファイル
をメールに添付するなり、紙に書いてポストに投函するなり、言葉で伝えるなり、いかなる方法をつかっても構わないので提出してください。

質問等はメールまたはコメントにて。
cosmo-cleaner@za.pial.jp

-----------------------------------------------------------

解答

解答例は以下の通りです

#include <stdio.h>

int main () {

    double x,y;

    printf("2つの小数点を持った実数値を入力してください。\n");
    printf("x:");    scanf("%lf", &x);
    printf("y:");    scanf("%lf", &y);

    printf("x + y = %f \n",x+y);
    printf("x - y = %f \n",x-y);
    printf("x * y = %f \n",x*y);
    printf("x / y = %f \n",x/y);

    printf("1 / 7 = %.3f \n",1.0/7.0);    //ここは1と7ではなく1.0と7.0にしないとダメ
    return(0);

}

%lfは倍精度実数値といって、%fより精度が必要な時に使います。
たいていは使わないと思いますが、scanf()の場合は、%lfでないと、小数点以下の数を受け付けない(みたい)です。気になる人は実験してみてください。

1/7の計算をするときは、解答例のような書き方もありますが、この場合は小数点を含む実数を扱う%.3fに合わせて、1.0/7.0と計算式を入れなければなりません。しかし、島本君の解答にありましたが、このような書き方もあります。

printf("1 / 7 = %.3f\n" ,(double)1 / (double)7);

これは、1と7という整数を、double型に変換しています。書き方は、

(double) a //aは実数

このような変換はキャストと呼ばれ、()をキャスト演算子と言います。この方法を使えば、double型に変換されるので、小数点を含む実数を扱う%.3fにも対応できます。

解答早かった順位
1位 O氏
2位 島本

忙しいとは思いますが、こちらも時間さいて問題と解答作ってるので、頑張って講座に取り組んでください。質問があったらいつでも受け付けます。

質問、補足ありましたら、コメントまたはメールにて。

1 件のコメント:

cozmo-cleaner さんのコメント...

解答が一人も来ないので、解答掲載を延期します。
質問があれば答えるので、
どんどん解答してください。