C プログラミング (C Programming)

[2020/05/04, H.Aman]

[3] 「プログラムの流れの分岐」サンプルプログラムの解説

[3] 「プログラムの流れの分岐」演習課題(教科書では主に 3 章が対応)

【Atom での編集作業での注意点】
行によっては先頭(左側)に少し空白(段差)があります.
これらを専門用語でインデントといいます.
インデントを付けてプログラムを書くのは基本中の基本なので, 最初は真似して書いて下さい.
インデント(段差)は,講義ビデオの最後でお願いしているように 自動インデント機能を使えば問題なく付けられます.

  • 演習 1

    サンプルプログラム 1 (sample1.c) を ex01.c という別の名前のファイルにコピーし, それを編集して次の入出力例のように実行できるプログラム作りなさい.
    x が y で割り切れる時だけ,最後のメッセージが表示される

    【ヒント】
    x % y で余りが求まるので,これが 0 に等しければ「x が y で割り切れる」ことを意味する.

    【入出力例(1)】 (赤字は実行時にキーボードから入力する内容)
    二つの整数を入力して下さい:14 4
    x = 14
    y = 4

    【入出力例(2)】 (赤字は実行時にキーボードから入力する内容)
    二つの整数を入力して下さい:15 5
    x = 15
    y = 5
    x は y で割り切れます
  • 演習 2

    サンプルプログラム 2 (sample2.c) を ex02.c という別の名前のファイルにコピーし, それを編集して次の入出力例のように実行できるプログラム作りなさい.
    入力される二つの整数を x, y として:
    (1) x < y の時:「x に ... を足すと y になります」
    (2) そうでない時:「x から ... を引くと y になります」

    【入出力例(1)】 (赤字は実行時にキーボードから入力する内容)
    二つの整数を入力して下さい:5 14
    5 に 9 を足すと 14 になります

    【入出力例(2)】 (赤字は実行時にキーボードから入力する内容)
    二つの整数を入力して下さい:14 4
    14 から 10 を引くと 4 になります

    【この課題で注意すべき点】
    上の実行例からわかるように,ここでの出力は三つの整数を表示することになっています.
    したがって,printf 関数では %d を三つ登場させ,
    printf("%d%d を足すと %d になります\n", );
    とか
    printf("%d から %d を引くと %d になります\n", );
    というかたちになります.
    実際に表示されるときには %d に対応する数字として, 指定された順番に が使われます.

  • 演習 3

    サンプルプログラム 3 (sample3.c) を ex03.c という別の名前のファイルにコピーし, それを編集して次の入出力例のように実行できるプログラム作りなさい.
    入力される二つの整数を x, y として:
    (1) x の 2 乗(x*x)< y の時:「x は y の平方根よりも小さいです」
    (2) x の 2 乗(x*x)> y の時:「x は y の平方根よりも大きいです」
    (3) いずれでもない時:「x は y の平方根です!」

    【入出力例(1)】 (赤字は実行時にキーボードから入力する内容)
    二つの整数を入力して下さい:3 14
    3 は 14 の平方根よりも小さいです

    【入出力例(2)】 (赤字は実行時にキーボードから入力する内容)
    二つの整数を入力して下さい:7 36
    7 は 36 の平方根よりも大きいです

    【入出力例(3)】 (赤字は実行時にキーボードから入力する内容)
    二つの整数を入力して下さい:6 36
    6 は 36 の平方根です!
  • 演習 4

    サンプルプログラム 4 (sample4.c) を ex04.c という別の名前のファイルにコピーし, それを編集して次の入出力例のように実行できるプログラム作りなさい.
    入力される三つの得点を x, y, z として,
    (1) 合格基準を満たしている時:
       (1a) 三つとも 60 以上ならば:「完璧な合格です」
       (1b) そうでないならば:「とりあえず合格です」

    (2) 合格基準を満たしていない時:「不合格です」

    ただし,合格基準とは:x >= 60 であって,y >= 60 または z >= 60 であること.
    (x は 60 以上が必須,y と z はどちらか一方が 60 以上でも OK)

    【入出力例(1)】 (赤字は実行時にキーボードから入力する内容)
    三つのレポートの得点を入力してください:60 70 80
    完璧な合格です

    【入出力例(2)】 (赤字は実行時にキーボードから入力する内容)
    三つのレポートの得点を入力してください:80 50 60
    とりあえず合格です

    【入出力例(3)】 (赤字は実行時にキーボードから入力する内容)
    三つのレポートの得点を入力してください:50 70 80
    不合格です

余裕のある人は

  • 発展課題 1(必須ではありません)

    サンプルプログラム 5 (sample5.c) を ex05.c という別の名前のファイルにコピーし, それを編集して次の入出力例のように実行できるプログラム作りなさい.
    入力される二人の成績の差(絶対値)を a として,
    (1) a == 0 の時:「全く同じですね」
    (2) a < 10 の時:「ほぼ同じですね」
    (3) (上のいずれでもなく)a < 20 の時:「差がつきましたね」
    (4) 上のいずれでもない時:「勝負になりませんね」

    [ヒント] x と y の差(絶対値)の求め方
     a = x - y;
     if ( a < 0 ){
        a = -a;
     }

    【入出力例(1)】 (赤字は実行時にキーボードから入力する内容)
    二人の成績を入力してください:70 70
    全く同じですね

    【入出力例(2)】 (赤字は実行時にキーボードから入力する内容)
    二人の成績を入力してください:75 70
    ほぼ同じですね

    【入出力例(3)】 (赤字は実行時にキーボードから入力する内容)
    二人の成績を入力してください:70 85
    差がつきましたね

    【入出力例(4)】 (赤字は実行時にキーボードから入力する内容)
    二人の成績を入力してください:60 85
    勝負になりませんね