情報科学概論(1年生)
期末試験問題
2005.02.07
Back to index page
期末試験に関する注意事項をよく読んでおくこと!
解答用紙
- 81から140までの整数を15個ずつ4行に分けて例のように表示するスクリプト
を2重の繰りかえしを用いて作成せよ.数字は右揃えとすること(8点)
難易度 ★★★
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
解答例
for i in 5..8
for j in 1..15
printf "%4d", 15*i + j + 5
end
printf "\n"
end
|
- サイコロを500回振って1から6までそれぞれの目が何回出たかを表示するス
クリプトを作成せよ.(8点)
難易度 ★★
解答例
dice = Array.new(6,0)
for i in 1..500
n = rand(6)
dice[n] += 1
end
p dice
|
- 設問2のスクリプトを,出た回数が多い順に,目と回数を例のように表示するス
クリプトに改造せよ.(6点)
難易度 ★★★★★
[74, 86, 99, 85, 75, 81]
目: 3 回数: 99
目: 2 回数: 86
目: 4 回数: 85
目: 6 回数: 81
目: 5 回数: 75
目: 1 回数: 74
|
ヒント:多重配列のソートを利用する.例えば,次のスクリプトの動作を確認し
て応用せよ.
ary = [[5,1], [3,2], [4,3]]
p ary.sort
|
|
解答例
dice = Array.new(6,0)
for i in 1..500
n = rand(6)
dice[n] += 1
end
ary = [[],[],[],[],[],[]]
for i in 0..5
ary[i][0] = dice[i]
ary[i][1] = i + 1
end
p dice
new_ary = ary.sort.reverse
for i in 0..5
printf "目: %d 回数: %d\n", new_ary[i][1], new_ary[i][0]
end
|
- 6桁の乱数 num1 と二桁の乱数 num2 を発生させ,整数
演算で num1 を num2 で割る.商をさらに繰りかえし
num2 割り続けるとき,得られた全ての商を値とし
て持つ配列を作成し,例のように表示するスクリプトを作成せよ.(8点)
難易度 ★★★★
num1 = 314417, num2 = 11
[28583, 2598, 236, 21, 1, 0]
|
解答例
num1 = rand(900000) + 100000
num2 = rand(90) + 10
printf "num1 = %d, num2 = %d\n", num1, num2
ary = []
i = 0
while num1 > 0
num1 /= num2
ary[i] = num1
i += 1
end
p ary
|
- 次のスクリプトは配列 ary の要素を数値化してすべて自乗して表
示するこ
とを行うように作られたものであるが,間違いがいくつかあるため,この
ままでは動作しない.正しいスクリプトに修正したものを解答欄に記載せ
よ.ただし,1行目は変更しないでこのままとすること.(10点)
難易度 ★
ary = ["2", "5", "-4", "10", "-1", "0"]
for i in 0..ary.size
ary[i] = ary[i] * ary[i]
end
p ary
|
解答例
ary = ["2", "5", "-4", "10", "-1", "0"]
for i in 0..ary.size-1
ary[i] = ary[i].to_i * ary[i].to_i
end
p ary
|
目次ページに戻る