情報科学演習 実習課題 2011.07.25

Back to text page


復習課題

期末試験対策として,今回は以下の課題の解答を専用の 用紙に入力してください.用紙は5問の解答を全て一つの main() の中に記述する方式です.ですので,ヘッダファイルのインクルードはすでに用 紙の先頭で行っているため不要ですし,1問ごとに return(0) を記述 することは間違いです.その辺をよく理解して作業を行ってください.

解答用紙は,何も記入していなくても,すでにC言語のプログラムとなっていま すから,解答を記入してコンパイルエラーが出るようだと,自分の解答に間違い があるということですので,間違い部分の削除をしないと,本番の期末テストで は採点されないことにもなります.

なお,変数の宣言などは,各設問の解答部分にお願いします.ただし,一度宣言 したものは,2度行うとエラーになりますので,注意してください.授業でも説 明しているように,for 文で使用する変数 i は毎回初期化 されるので,何度使用しても構いません.

  1. カウンタの復習

    1桁の整数を乱数で発生させる.もし,同じ数が3回続いたらMiracle!と表示して 終わるプログラムを作成せよ.

    9 9 3 9 9 7 6 3 9 8 2 2 6 5 8 4 6 3 3 2 7 9 9 7 6 3 4 3 4 9 2 4 9 4 1 6 9 7 6 8 3 7 7 9 1 5 3 4 8 5 5 3 2 4 8 7 5 9 8 8 8
    Miracle!
    

    発生した乱数の値を格納しておく変数を用意して,それとの比較を行って連続を 判断します.

  2. 約数探索

    100から120までの整数の約数を探して以下のように表示するプログラムを作成せ よ.

    100 : 1 2 4 5 10 20 25 50 100
    101 : 1 101
    102 : 1 2 3 6 17 34 51 102
    103 : 1 103
    104 : 1 2 4 8 13 26 52 104
    105 : 1 3 5 7 15 21 35 105
    106 : 1 2 53 106
    107 : 1 107
    108 : 1 2 3 4 6 9 12 18 27 36 54 108
    109 : 1 109
    110 : 1 2 5 10 11 22 55 110
    111 : 1 3 37 111
    112 : 1 2 4 7 8 14 16 28 56 112
    113 : 1 113
    114 : 1 2 3 6 19 38 57 114
    115 : 1 5 23 115
    116 : 1 2 4 29 58 116
    117 : 1 3 9 13 39 117
    118 : 1 2 59 118
    119 : 1 7 17 119
    120 : 1 2 3 4 5 6 8 10 12 15 20 24 30 40 60 120
    

  3. 図形表示

    2重の for 文を用いて,以下に示すような円形の図形を描画するプロ グラムを作成せよ.

    ○○○○○○○○○○○○○○○○○○○○○
    ○○○○○○○○○○○○○○○○○○○○○
    ○○○○○○○○●●●●●○○○○○○○○
    ○○○○○○●●●●●●●●●○○○○○○
    ○○○○○●●●○○○○○●●●○○○○○
    ○○○○●●○○○○○○○○○●●○○○○
    ○○○●●○○○○○○○○○○○●●○○○
    ○○○●●○○○○○○○○○○○●●○○○
    ○○●●○○○○○○○○○○○○○●●○○
    ○○●●○○○○○○○○○○○○○●●○○
    ○○●●○○○○○○○○○○○○○●●○○
    ○○●●○○○○○○○○○○○○○●●○○
    ○○●●○○○○○○○○○○○○○●●○○
    ○○○●●○○○○○○○○○○○●●○○○
    ○○○●●○○○○○○○○○○○●●○○○
    ○○○○●●○○○○○○○○○●●○○○○
    ○○○○○●●●○○○○○●●●○○○○○
    ○○○○○○●●●●●●●●●○○○○○○
    ○○○○○○○○●●●●●○○○○○○○○
    ○○○○○○○○○○○○○○○○○○○○○
    ○○○○○○○○○○○○○○○○○○○○○
    

    上の例では日本語フォントの○と●を使用していますが,文字は何でも構いませ ん. ただし,ASCIIコード文字では縦長になって見栄えが良くないので,2文字分(例 えば ** と -- のような)使用 する方が良いかもしれません.
  4. サイコロの目の出現頻度

    サイコロを10000回振って出た目の出現確率を表示せよ.

        1     2     3     4     5     6
     1698  1647  1679  1666  1692  1618
    0.170 0.165 0.168 0.167 0.169 0.162
    

    サイコロの目の出現回数を入れておく配列 dice を用意しておいて, 目に従って,dice[1] から dice[6] を1ずつ増やしていくこ とで,出現頻度の格納された配列が作成できます.ただし,配列は初期化してお かないといけないので,以下に示す初期化を行っておいてください.

        ary[7] = {0, 0, 0, 0, 0, 0, 0};
    


    なお,上の例で要素が7つ分用意されているのは,配列の要素の添字は0から始まるので,サイコロの目と合わせるために0番目を捨 てているためです.
  5. 配列要素の書き換え

    5×5のマトリックス状に●もしくは○をランダムに表示する.出現確率はそれぞ れ1/2ずつとする.その操作を何度か繰り返し,○のところに●が出た場合には ●で置き換えるが,●の部分に○が出ても置き換えないとする.すなわち,段々 と●が多くなるようにし,全部が●になる まで繰り返すプログラムを作成せよ.

    ●●○○○
    ○●●○●
    ○○●●○
    ○●●○●
    ○○○●○
    
    ●●○○○
    ●●●○●
    ●○●●●
    ○●●○●
    ●●●●○
    
    ●●●●○
    ●●●○●
    ●○●●●
    ●●●○●
    ●●●●○
    
    ●●●●○
    ●●●○●
    ●○●●●
    ●●●○●
    ●●●●○
    
    ●●●●○
    ●●●○●
    ●○●●●
    ●●●●●
    ●●●●○
    
    ●●●●●
    ●●●○●
    ●●●●●
    ●●●●●
    ●●●●●
    
    ●●●●●
    ●●●○●
    ●●●●●
    ●●●●●
    ●●●●●
    
    ●●●●●
    ●●●●●
    ●●●●●
    ●●●●●
    ●●●●●
    

    上の例は,最初の1回分とそれ以後の修正分とでループを分けています.修正の 部分は while 文を使用して,全部黒丸になることを数値化してその数値 により終了の判定を行っています.

Back to text page