添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 変数は必ず宣言してから用いる.(int n, double x,など)
  • 変数の代入には = を用いる.( = の右側の式の値が,左側の変数に代入される)
  • 変数の表示の仕方は整数型と実数(浮動小数点)型で違う. printf("%d",n),printf("%lf",x)
  • 変数の入力の仕方も整数型値で違う. scanf("%d",&n), scanf("%lf",&a)
  • ブロック文

    今日でてくる if 文や for, while 文では ブロック文 と呼ばれるものが使われます.ブロック文とは、文を一まとめにしたもので、 { } で囲まれています.

    if , if-else

    プログラムを作成していると、条件によって処理を分岐させたい場合がよく出てきます.例えば、先ほどの確認問題(割り算)等です。(下のプログラムは解答例です。確認しつつファイル名を if-1.c としてエディターで打ち込んでください.)

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

    #include <stdio.h>

    int main()
    /*
    実数型の変数 a, b, c を用意する */
    double  a, b, c;

    /* 実数型変数 a に入力 */
    printf("
    実数 a を入力してください: ");
    scanf("%lf", &a);
    /*
    実数型変数 b に入力 */
    printf("
    実数 b を入力してください: ");
    scanf("%lf", &b);
    /*
    実数型変数 c a/b の結果を代入 */
    c = a/b;

    /* 変数 c の内容を画面に表示 */
    printf("a/b=%lf\n", c);

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

    このプログラムを実行し、実数 a,b をそれぞれ入力すると、 a/b の結果を画面に出力します.ところで、 b として 0 を入力するとどうなるでしょうか?やってみると分かりますが、なにかエラーが出ます. このように、実数型に限らず 0 で割ろうとすると実行時にエラーになる(コンパイルは成功する) ので、それを回避することを考えねばなりません.そこで、 条件文 が登場します.まずは、サンプルプログラムでみてみましょう.先の if-1.c を次のように変更してください(説明の為に色をつけていますが、色は無視してください).

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

    #include <stdio.h>

    int main()
    /*
    実数型の変数 a, b, c を用意する */
    double  a, b, c;

    /* 実数型変数 a に入力 */
    printf("
    実数 a を入力してください: ");
    scanf("%lf", &a);
    /*
    実数型変数 b に入力 */
    printf("
    実数 b を入力してください: ");
    scanf("%lf", &b);
    /* b
    0 であるかによって分岐 */
    if (b == 0.0)
    printf("0 での割り算はできません. \n");
    /* 実数型変数 c a/b の結果を代入 */
    c = a/b;

    /* 変数 c の内容を画面に表示 */
    printf("a/b=%lf\n", c);

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

    if (b == 0.0) からが条件文です.このプログラムでは、入力された b の値が 0 に等しければ 青色の部分 が実行され、それ以外の場合は 赤色の部分 が実行されます.

    整数 m が入力されると、それが奇数か偶数かを判定するプログラムを作成せよ.

    (注:剰余を求める演算子 % を利用 . これは整数型変数 m, n に対し、 m%n m n で割ったときの余りを与える.この演算子は整数型変数にのみ利用可能.)

    2つの実数 s, t を入力すると , s t, s = t, s t か判定して表示するプログラムを作成せよ.( If-else 文のパターン3を参考)

    3つの実数 , a, b, c を入力すると , x に関する2次方程式 , ax 2 + bx + c = 0 が実数解を持つか判定し , 表示するプログラムを作成せよ.

    a==100 」 または 「 a==200 」 なら

    といった、場合を扱いたいときがあります.このような 「かつ」 「または」 に相当する 論理演算子 を使うことで、より複雑な条件をあらわすことができます.

    例えば、うるう年は

    「4で割り切れ かつ 100で割り切れない年」
    「400で割り切れる年」

    のどちらかに当てはまる年のことです.例えば入力された年(西暦)を上の条件に照らし合わせ、うるう年かどうかを判定するプログラムは次のようになります. if 文の中身に注意しつつ , ファイル名を if-2.c として打ち込んで , 実行してみてください . 途中でてくる % は剰余を与えるものでした(上述).

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

    #include <stdio.h>

    int main()
    int n;
    printf("
    =");
    scanf("%d", &n);
    if (
    (n%4 == 0) && (n%100 != 0) )
    printf("
    うるう年です \n");
    if (
    n%400 == 0 )
    printf("
    うるう年です \n");

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

    途中でてくる && が関係演算子で、「かつ」をあらわします.関係演算子には && のほかに次のようなものがあります.

    関係演算子 && & が2つであることに注意してください( || も同様). & 1つでも他の意味がありますので、コンパイルエラーにはなりません.しかし、期待した動作とはならないので注意が必要です.

    先の日本語でのうるう年の定義は

    「4で割り切れ かつ 100で割り切れない年」 または 「400で割り切れる年」

    と書き直すことができます.つまり、先の2つの if 文を一つにまとめて次のように書くこともできます.

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

    #include <stdio.h>

    int main()
    int n;
    printf("
    =");
    scanf("%d", &n);
    if (
    ((n%4 == 0) && (n%100 != 0)) || (n%400 == 0) )
    printf("
    うるう年です \n");

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