2009年6月28日日曜日

C言語講座 第4回 ifとelseと時々演算子

お題:
①プログラム実行中に1以上99以下の”2つの整数”a,bの入力を受けつけ、そのa,bの関係(a=b,a<b,a>b)を表示させる。
②a==a,a==0,a<100,a<0,a>0,a>100の関係演算子の結果をそれぞれ表示させる。

プログラム実行例

1以上99以下の整数を2つ入力してください。
a:
b:
a<bです。

関係演算子の結果は、
?
?
・・・

必須文字列
・if
・else
・==, < , >

ifとelseのスマートな書き方、関係演算子(==,<,>など)の仕組みを理解してください。

解答掲載は6月29日です。それまでに各自プログラムを作成し、
・プログラム文
・その実行ファイル
をメールに添付するか、8G以上のUSBメモリに入れてプレゼントするか、16GのmicroSDに入れてプレゼントするか、1TのHDに入れてプレゼントするか、いずれかの方法で提出してください。

質問等はメールまたはコメントにて。 どんな些細なことでも答えるので、頑張って取り組んでください。
cosmo-cleaner@za.pial.jp

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

解答

解答例は以下の通りです。

#include <stdio.h>

int main () {
    int a,b;
    printf("a:");    scanf("%d", &a);
    printf("b:");    scanf("%d", &b);
    if (a==b)
        puts("a=b");
    else if (a<b)
        puts("a<b");
    else if (a>b)    //elseのみでも可
        puts("a>b");
    printf("%d\n %d\n %d\n %d\n %d\n %d\n"
        ,a == a,a==0,a<100,a<0,a>0,a>100);
}

実行例は以下の通りです。

a:25
b:31
a<b
1
0
1
0
1
0

解説
演算子を使って条件を作りました。ifとelseの書き方は人それぞれですが、”else if ()”とした方がスマートでいいと思います。

②の課題は演算子の本質を知ることが目的です。演算子は2つの関数の関係性について、演算子が表現するものと一致するのかしないのかを、1か0で表します。この場合、例えばa==aは当然成り立つので、”1”が吐き出されます。a==0はaが0で無い限り一致しないので、”0”が吐き出されます。ifの条件で演算子が使えるのは、ifの「0か非0か」という条件分岐に合うからです。

演算子吐き出す1と0はint型なので、扱いには注意してください。

他の演算子として、
a!=b、a<=b、a>=bなどがありますが、自分で調べてみてください。

1 件のコメント: